我正在寻找一种快速的方法来计算 3D 中两个给定矩形的线段。例如,每个 3D 矩形由其四个顶点定义。
任何合理的编程语言的解决方案都可以。
我正在寻找一种快速的方法来计算 3D 中两个给定矩形的线段。例如,每个 3D 矩形由其四个顶点定义。
任何合理的编程语言的解决方案都可以。
根据 Aaron 的回答,我认为其中包含错误:
如果您省略第 4 步,那么当第一个矩形与第二个矩形的平面相交而不是矩形本身时,您会得到一个错误的相交。例子:
rectangle1=[(-1,-1,0),(-1,1,0),(1,1,0),(1,-1,0)]
rectangle2=[(0,50,50),(0,50,40),(0,40,40),(0,40,50)]
Plane1 为 z=0,plane2 为 x=0,它们的交点为 y 轴,与 rectangle1 在 1 和 -1 处相交。但是,矩形不相交。
(*) 如果平面重叠,矩形的交点仍然可以是一条线,但这是一个相当糟糕的情况。
您需要结合三种常见的 3D 操作:
将两个矩形变成两个平面(只需取四个顶点中的三个并从中构建平面)。
将两个平面相交以获得无限线(参见此处)。
将此线与第一个矩形的边界线相交。您应该得到两个交点,它们是您寻找的线段的端点。