我试图找到一种方法来获取两个矩形之间的交点的线(3D空间中的两个点)。
我遇到了一个问题:Intersection between two rectangles in 3D
但这不是我的问题。在这个问题中,当我在寻找矩形的整体时(考虑相框与图片本身),矩形仅被视为边界(周长)。
我已经发现,在每种情况下,都会有一个相交线(两个点),或者根本没有相交线。如果相交只是在边界上,那么只是一个点,在我的情况下,可以将其视为没有相交。
我的情况是这些矩形之一代表“静态”表面,该表面不能移动或更改。另一个代表“动态”表面,我必须对其进行调整以避免交叉
示例:
一旦获得了3D空间中的点p1和p2,我的目标就是将动态矩形修改为3d多边形,该多边形将不再与静态矩形交叉,如下所示:
因此,您可以了解为什么“边缘交叉点”与我的情况无关。我正在将“真实的”相交变成边缘相交,因此任何边缘相交都不需要我做任何事情。
我只是在寻找一个公式,从两组四个点(矩形)开始,这将给我两个相交线的两个点,或者告诉我没有(相关的)相交。
我在此网站上找到的每个公式或其他公式都不符合我的需要,或者不让我输入任意矩形(例如,我无法解决使用平面或一个矩形,仅需4行)
我当然正在尝试使用C#对其进行编码,因此任何代码答案都将为您带来很大的帮助,但是我相信,即使是仅数学答案也足以满足我从中生成代码的需要,因此我将接受仅由伪代码或简单的数学公式组成的答案,只要它们足够简单或足够好地解释以使我了解正在发生的事情。
答案 0 :(得分:1)
如果您只使用算法而不是完整代码,则这里是一个草图:
I
或发现这些平面是平行的,所以没有交点I
线与包含矩形所有边的线的交点,如this answer I
线与两个矩形的交点(请注意,此处的点被视为两端相同的线段的边沿情况)。如果您没有2个线段,则矩形将没有交点。I
行上找到了2个线段(每个矩形中的一个),则只需要找到它们的交点即可,这将是您的答案(同样,空白表示没有交点)。 / li>