Я бы думал о вершинах как о векторах.
Таким образом, вы можете нормализовать каждый вектор, затем удалить координату Z, а затем снова применить умножение.то есть tri = vec1, vec2, vec3, vec1Length = vec1.getLength () newVec1 = vec1.normalize () * vec1Length
Поскольку это сохранит размер векторов, но отобразит их в 2d-плоскости.(или это должно быть, я не на 100% уверен, что это математически правильно.)
Другой способ, которым вы могли бы сделать это, - думать о самом треугольнике как о 2-мерной плоскости, а затем преобразовывать векторы изэто локальное пространство к 2-й плоскости мирового пространства.
Так, например, происхождение мира равно (0,0,0)
, сам треугольник - это плоскость, определяемая тремя точками, выиспользуйте один вектор в качестве координаты X, найдите вектор, перпендикулярный этому, и у вас есть заданная координата y.Вы также можете определить Z на X, перекрестное произведение Y, это даст вам «смещение» от мирового происхождения, затем вы можете отобразить их обратно на 2d плоскость, представленную векторами X, Y из мирового происхождения (т.е. (1, 0) и (0,1)).Там должно быть математика, чтобы сделать это во многих основных книгах по компьютерной графике.