如何计算两个矩形的3D线段?

时间:2009-11-09 10:27:24

标签: algorithm math geometry intersection

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

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

2 个答案:

答案 0 :(得分:2)

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

  1. 将两个矩形变成两个平面(只取四个顶点中的三个并从中构建平面)。
  2. 将两个平面相交以获得无限直线(*)。
  3. 将此线与第一个矩形的边界线相交。
  4. 将3的结果与第二个矩形的边界线相交。
  5. 如果省略步骤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轴,它与1和-1的rectangle1相交。但是,矩形不相交。

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

答案 1 :(得分:1)

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

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

  2. 将两个平面相交以获得无限线(请参阅here)。

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