рассчитать площадь треугольника в openmesh

Вот фрагмент из примера «Процесс создания полигональной сетки»:

for (v_it=mesh_.vertices_begin(); v_it!=v_end; ++v_it) {
area = 0.0;

for (vf_it=mesh_.vf_iter(v_it); vf_it; ++vf_it)
{
fv_it = mesh_.fv_iter(vf_it);

const Mesh::Point& P = mesh_.point(fv_it);  ++fv_it;
const Mesh::Point& Q = mesh_.point(fv_it);  ++fv_it;
const Mesh::Point& R = mesh_.point(fv_it);

area += ((Q-P)%(R-P)).norm() * 0.5f * 0.3333f;    // norm: compute euclidean norm, return Scalar
}

weight(v_it) = (fabs(area)>FLT_MIN ? 1.0 / (2.0 * area) : 0.0);
}

почему 0,3333f умножается в конце?

0

Решение

((Q-P)%(R-P)).norm() * 0.5f часть, как вы, вероятно, знаете, это просто площадь треугольника, охватываемая Q, P, а также R,

Похоже, что в этом примере вычисляется вес вершины, пропорциональный площади поверхности, предположительно «принадлежащей» каждой вершине. Предполагается, что одна треть площади любого падающего треугольника вносит вклад в эту конкретную вершину. (Две другие трети считаются принадлежащими двум другим вершинам, инцидентным соответствующему треугольнику.) Следовательно, ваш коэффициент (приблизительно) 1/3.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]