我有一个3点A,B和C的三角形。 我可以通过
找到三角形的法线|AB x AC|
在下图中,它显示了我知道的ABC和| n1 |我可以计算出来。但我怎么会找到P1?
如果它有帮助,我需要用它来知道Ray是否会与Convex Mesh碰撞,它需要P1。使用A,B或C,它似乎不起作用。
答案 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|
是从原点(垂直)到平面的距离。