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

时间:2011-08-09 08:39:38

标签: c# algorithm graphics

我尝试了Line of intersection between two planes

中的算法

但都没有返回正确的结果

我有两个3D矩形,每个由三个点定义,我想在交叉线上得到两个点,这样两个点在交叉点的尽头 我执行以下步骤:

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

我想获得位于平面边界上的线的实际终点

祝你好运

1 个答案:

答案 0 :(得分:0)

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


Here是一个解释如何使用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

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