有3个点,我如何计算它们形成的平面的偏移量

时间:2018-03-11 09:27:25

标签: vector geometry plane

我有一个3点A,B和C的三角形。 我可以通过

找到三角形的法线
|AB x AC|

在下图中,它显示了我知道的ABC和| n1 |我可以计算出来。但我怎么会找到P1?

enter image description here

如果它有帮助,我需要用它来知道Ray是否会与Convex Mesh碰撞,它需要P1。使用A,B或C,它似乎不起作用。

2 个答案:

答案 0 :(得分:1)

向量P1 = (D*a1 + D*b1 + D*c1)应垂直于向量(P1-C)(使用A,B,C中的任意点),因此点积为零

D * a1 * (D * a1 - cx) + D * b1 * (D * b1 - cy) + D * c1* (D * c1 - cz) = 0
or
D = (N.dot.C) / (a1^2 + b1^2 + c1^2)

如果normal是unit(标准化),则系数D的表达式变得非常简单

d = uN.dot.C

之后:

 P1 = D * N = d * uN 

快速检查:

A = (2, 0, 0)
B = (2, 2, 0)
C = (2, 0, 2)
AB = (0, 2, 0)
AC = (0, 0, 2)
N = AB x AC = (4, 0, 0)
N.dot.N = 16
uN = (1, 0, 0)

N.dot.C = (4 * 2) = 8
D = N.dot.C / N.dot.N = 1/2
P1 = D * N  = (2, 0, 0)

d = uN.dot.C = (1 * 2) = 2
P1 = d * uN = (2, 0, 0) 

答案 1 :(得分:0)

任何平面的一般方程是

Ax + By + Cz + D = 0

其中(A, B, C)是飞机的法线向量,您已用三点计算。

要让D将x,y,z替换为您知道在平面上的任何点(x1,y1,z1)的坐标:

D = -(A*x1 + B*y1 + C*z1)

好消息是,如果向量(A,B,C)是单位向量,那么|D|是从原点(垂直)到平面的距离。