Geometry 从点开始的线段

Geometry 从点开始的线段,geometry,line,segment,Geometry,Line,Segment,在二维平面中有一个点p和两条线段。点p是一个视图位置,相机从该位置朝向线段。当从点P看时,我想检查线段1是否部分或完全隐藏在线段2后面。我认为问题在于第二条线是否被第一条线“遮住” 假设你的相机点是C,你的线段是A1,A2和B1,B2 我会计算交叉积CA1xCB1和CA2xCB2。如果B1点位于CA1线的左侧或右侧,该标志将显示该点。这取决于三角形CA1A2和CB1B2的方向(它们的方向必须相同,它们有很多种方法) 然后,您可以使用该标志了解您是否处于以下情况: CA1xCB1为负值或CA2x

在二维平面中有一个点p和两条线段。点p是一个视图位置,相机从该位置朝向线段。当从点P看时,我想检查线段1是否部分或完全隐藏在线段2后面。

我认为问题在于第二条线是否被第一条线“遮住”

假设你的相机点是C,你的线段是A1,A2和B1,B2

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

然后,您可以使用该标志了解您是否处于以下情况:

  • CA1xCB1为负值或CA2xCB2为正值,然后部分可见
  • 相反,然后隐藏

您还可以计算CA1xCB2和CA2xCB1以获得细粒度的情况。

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的交点,以检查是否确实发生了这种情况。

您的直线是如何定义的?方程(ax+by+c=0)或坐标((x1,y1)-(x2,y2))?是的,这基本上是测试l1和l2中的两个点之间是否存在分离轴。