给定三角形 T的顶点V1 (x1,y1,z1)
,如果我知道它位于三角形 Tp 的投影范围内,我必须通过它的 x,y 坐标找到一个点的 z 坐标。V2 (x2,y2,z2)
V3 (x3,y3,z3)
(x,y)
(x1,y1), (x2,y2), (x3,y3)
实际上,3D 中的三角形平面由方程定义:Ax+By+Cz+D=0
,我可以发现z = (D-Ax-By)/C
问题是 A、B、C、D 太昂贵而无法在运行时计算:
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)
是否可以使用opengl着色器计算A、B、C、D?是否有优化算法来查找平面系数?