Вы вычисляете точку в треугольнике из ее вершин, представленных как Vector uvVectors[3]
, и ее барицентри c координаты u
, v
и w == 1 - u - v
.
В коде C ++ вы ' Как показано, Vector
, вероятно, является классом или структурой. Оператор умножения *
был перегружен, в данном случае для умножения вектора на скаляр:
Vector uvHit = uvVectors[0] * u + uvVectors[1] * v + uvVectors[2] * (1 - u - v);
В C вы не можете перегрузить операторы, поэтому вы должны написать это Расчет явно. Давайте предположим, что ваш вектор является вектором в трехмерном пространстве:
typedef struct Vector Vector;
struct Vector {
double x, y, z;
};
Тогда ваше умножение выглядит так, когда вы инициализируете вектор:
Vector uvHit = {
uvVectors[0].x * u + uvVectors[1].x * v + uvVectors[2].x * (1 - u - v),
uvVectors[0].y * u + uvVectors[1].y * v + uvVectors[2].y * (1 - u - v),
uvVectors[0].z * u + uvVectors[1].z * v + uvVectors[2].z * (1 - u - v)
};
или так, когда вы присваиваете его значения позже:
uvHit.x = uvVectors[0].x * u + uvVectors[1].x * v + uvVectors[2].x * (1 - u - v);
uvHit.y = uvVectors[0].y * u + uvVectors[1].y * v + uvVectors[2].y * (1 - u - v);
uvHit.z = uvVectors[0].z * u + uvVectors[1].z * v + uvVectors[2].z * (1 - u - v);