我正在寻找一种快速计算3D中两个给定矩形的线段的方法。例如,每个3D矩形由其四个顶点定义。
任何合理的编程语言都可以使用解决方案。
答案 0 :(得分:2)
根据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轴,它与1和-1的rectangle1相交。但是,矩形不相交。
(*)如果平面重叠,矩形的交点仍然可以是一条直线,但这是一个相当讨厌的情况。
答案 1 :(得分:1)
您需要结合三种常见的3D操作:
将两个矩形转换为两个平面(只取四个顶点中的三个并从中构建平面)。
将两个平面相交以获得无限线(请参阅here)。
将此线与第一个矩形的边界线相交。你应该得到两个交叉点,它们是你寻找的线段的终点。