解决这个问题最简单(而且非常通用)的方法是:
L1 + x*(L2 - L1) = (P1 + y*(P2 - P1)) + (P1 + z*(P3 - P1))
它给出了 3 个变量的 3 个方程。求解 x、y 和 z,然后代入任一原始方程以获得答案。这可以推广到做复杂的事情,比如找到 4 维中两个平面的交点。
对于另一种方法,叉积N
of (P2-P1)
and (P3-P1)
是与平面成直角的向量。这意味着平面可以定义为点的集合P
这样的点积P
and N
是点积P1
and N
。解决x
这样(L1 + x*(L2 - L1)) dot N
这个常数为您提供了一个易于求解的单变量方程。如果您要与该平面相交很多线,那么这种方法绝对值得。
明确地写出这给出:
N = cross(P2-P1, P3 - P1)
Answer = L1 + (dot(N, P1 - L1) / dot(N, L2 - L1)) * (L2 - L1)
where
cross([x, y, z], [u, v, w]) = x*u + y*w + z*u - x*w - y*u - z*v
dot([x, y, z], [u, v, w]) = x*u + y*v + z*w
请注意,叉积技巧only适用于 3 维,并且仅适用于平面和直线的特定问题。