我有一个点 p,在一个 2D 平面上有 2 个线段。点 p 是从相机看向线段的位置。我想检查从点 P 看时,线段 1 是否部分或完全隐藏在线 2 后面。
1
我认为问题是第二行是否被第一行“屏蔽”。
假设你的相机点是 C,你的段是 A1,A2 和 B1,B2。
我将计算交叉积 CA1xCB1 和 CA2xCB2。如果 B1 点在 CA1 线的左侧或右侧,则该符号为您提供该点。这取决于您的三角形 CA1A2 和 CB1B2 的方向(它们必须定向相同,它们有很多方法可以做到这一点)。
然后,您可以使用该标志来了解您是否处于以下情况:
CA1xCB1 为阴性或 CA2xCB2 为阳性,则部分可见
相反,然后隐藏。
您还可以计算 CA1xCB2 和 CA2xCB1 以具有精细粒度的案例。
1
slurdge 的答案是一个好的开始,但它比这更复杂。
如果线段 2 比线段 1 更靠近 C,则它仍然可见,例如
A1-------A2
B1-B2
C
这里,B1 和 B2 在 A1A2 扇区“内”,但不被隐藏。
最难的是 B1 是否在 A1 和 A2 之间,但更靠近相机,而 B2 不是在 A1 和 A2 之间,而是离相机更远:
B2
A1-----A2
B1
C
B1B2 可以剪裁线段的边缘,从而使 B1B2 的一小部分隐藏(或者可能不是!)我想你必须找到 A1A2 和 B1B2 的交集来检查这是否真的发生。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(34条)