2017-03-17 2 views
0

berechnen Hier ist ein Ausschnitt aus „Polygon mesh Prozess“ Beispiel:die Fläche eines Dreiecks in 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); 
} 

warum 0.3333f am Ende multipliziert wird?

Antwort

1

Der ((Q-P)%(R-P)).norm() * 0.5f Teil, wie Sie wahrscheinlich wissen, ist einfach der Bereich des durch Q spannte Dreieck, P und R.

Es scheint, dass in diesem Beispiel eine Scheitelpunktgewicht proportional zu der Fläche der Oberfläche berechnet wird, von der angenommen wird, dass sie zu jedem Scheitelpunkt "gehört". Es wird angenommen, dass ein Drittel der Fläche eines beliebigen einfallenden Dreiecks zu dieser bestimmten Ecke beiträgt. (Die anderen zwei Drittel werden als zu den anderen zwei Ecken gehörend betrachtet, die auf das jeweilige Dreieck fallen.) Daher Ihr Faktor von (ungefähr) 1/3.

+0

Vielen Dank, Ihre Antwort ist nett zu mir. –

Verwandte Themen