Если вы хотите найти центр лица, это просто среднее положение всех вершин, составляющих это лицо:
function getFaceCenter(f : Face) : Vector3D
{
var vert : Vertex;
var ret : Vector3D = new Vector3D;
for each (vert in f.vertices) {
ret.x += vert.x;
ret.y += vert.y;
ret.z += vert.z;
}
ret.x /= f.vertices.length;
ret.y /= f.vertices.length;
ret.z /= f.vertices.length;
return ret;
}
Выше приведена очень простая функция для вычисления среднего, хотя для трехмерного вектора вместо простого скалярного числа. Это среднее значение является центром всех вершин на лице.
Если вам нужно сделать это много, оптимизируйте метод, запретив ему выделять вектор (передавая вектор, в который должны быть записаны возвращаемые значения), и создайте временную переменную для длины списка вершин вместо разыменования это через две ссылки на объекты, такие как min (f
и vertices
), что излишне тяжело.