Учитывая вершины V1 (x1,y1,z1)
, V2 (x2,y2,z2)
, V3 (x3,y3,z3)
треугольника T, я должен найти координату z точки по ее координате x, y, если я знаю, что (x,y)
лежит в проекции треугольника Tp (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)
Можно ли рассчитать A, B, C, D с помощью, скажем, шейдеров opengl?Существуют ли оптимизированные алгоритмы для нахождения плоских коэффициентов?