获取由两个矩形的交集定义的线段的端点

我在两个平面之间的交叉线上尝试了算法

但都没有返回正确的结果

我有三个3D矩形,每个由三个点定义,我想得到交叉线上的两个点,这样在交叉点末端的两个点我做了以下步骤:

  • 使用三个点将每个矩形转换为两个平面
  • 通过每个平面法线的叉积来得到线方向

我想获得位于飞机边界上的线的实际终点

最好的祝福

您提供的链接最有可能是正确的解决方案:)您是否正确地将您的三点信息转换为Ax + By + Cz + D = 0表格? 检查所有这些点是否满足此公式。 如果您有正确的{A,B,C,D},则可以很容易地计算其余部分,如链接中所述。


这是一个链接,解释如何使用3分获得此公式。


好的,这里有一个简单的总结:

  • 给定空间中的三个点(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),计算:

    A = y1(z2-z3)+ y2(z3-z1)+ y3(z1-z2)

    B = z1(x2 – x3)+ z2(x3 – x1)+ z3(x1 – x2)

    C = x1(y2-y3)+ x2(y3-y1)+ x3(y1-y2)

    D = – (x1(y2 z3-y3 z2)+ x2(y3 z1-y1 z3)+ x3(y1 z2-y2 z1))

    对于这两架飞机 这意味着你有A1,B1,C1,D1和A2,B2,C2,D2。

  • 使用A,B,C,D计算:

    x1 = 0

    z1 =(B2 / B1)* D1 – D2)/(C2 – C1 * B2 / B1)

    y1 =(-C1 * z1-D1)/ B1

  • 然后这个:

    x2 =某个值..

    z2 =(B2 / B1)*(A1 * x2 + D1) – A2 * x2 – D2)/(C2 – C1 * B2 / B1)

    y2 =( – C1 * z2-A1 * x2-D1)/ B1

基本上只是结合这两个链接中描述的两种方式..