从一个点线段

时间:2009-11-19 10:10:44

标签: geometry line segment

我有一个点p,在2D平面上有2个线段。点p是摄像机朝向线段的视图的位置。我想检查线段1是否部分或完全隐藏在第2行后面,从点P看。

2 个答案:

答案 0 :(得分:1)

我认为问题是第二行是否被第一行“屏蔽”了。

假设您的相机点为C,您的线段为A1,A2和B1,B2。

我会计算交叉积CA1xCB1和CA2xCB2。如果B1点位于CA1线的左侧或右侧,该符号将显示该点。这取决于你的三角形CA1A2和CB1B2是如何定向的(它们的方向必须相同,它们有很多种方法)。

然后,您可以使用该符号来了解您是否处于以下情况:

  • CA1xCB1为阴性或CA2xCB2为阳性,然后部分可见
  • 相反,然后隐藏。

您还可以计算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的交集来检查这是否真的发生了。