0

我正在寻找一种快速的方法来计算 3D 中两个给定矩形的线段。例如,每个 3D 矩形由其四个顶点定义。

任何合理的编程语言的解决方案都可以。

4

2 回答 2

2

根据 Aaron 的回答,我认为其中包含错误:

  1. 将两个矩形变成两个平面(只需取四个顶点中的三个并从中构建平面)。
  2. 将两个平面相交以获得无限线 (*)。
  3. 将此线与第一个矩形的边界线相交。
  4. 将 3 的结果与第二个矩形的边界线相交。

如果您省略第 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 处相交。但是,矩形不相交。

(*) 如果平面重叠,矩形的交点仍然可以是一条线,但这是一个相当糟糕的情况。

于 2009-11-10T08:43:36.167 回答
1

您需要结合三种常见的 3D 操作:

  1. 将两个矩形变成两个平面(只需取四个顶点中的三个并从中构建平面)。

  2. 将两个平面相交以获得无限线(参见此处)。

  3. 将此线与第一个矩形的边界线相交。您应该得到两个交点,它们是您寻找的线段的端点。

于 2009-11-09T10:34:08.237 回答