我有一个点p,在2D平面上有2个线段。点p是摄像机朝向线段的视图的位置。我想检查线段1是否部分或完全隐藏在第2行后面,从点P看。
答案 0 :(得分:1)
我认为问题是第二行是否被第一行“屏蔽”了。
假设您的相机点为C,您的线段为A1,A2和B1,B2。
我会计算交叉积CA1xCB1和CA2xCB2。如果B1点位于CA1线的左侧或右侧,该符号将显示该点。这取决于你的三角形CA1A2和CB1B2是如何定向的(它们的方向必须相同,它们有很多种方法)。
然后,您可以使用该符号来了解您是否处于以下情况:
您还可以计算CA1xCB2和CA2xCB1以获得细粒度的案例。
答案 1 :(得分: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的交集来检查这是否真的发生了。