cgal/Ridges_3/examples/Ridges_3/PolyhedralSurf.cpp

36 lines
701 B
C++

#include "PolyhedralSurf.h"
void PolyhedralSurf::compute_facets_normals()
{
std::for_each(this->facets_begin(), this->facets_end(),
Facet_unit_normal());
}
const Vector_3 PolyhedralSurf::computeFacetsAverageUnitNormal(const Vertex_const_handle v)
{
Halfedge_const_handle h;
Facet_const_handle f;
Vector_3 sum(0., 0., 0.), n;
Halfedge_around_vertex_const_circulator
hedgeb = v->vertex_begin(), hedgee = hedgeb;
do
{
h = hedgeb;
if (h->is_border_edge())
{
hedgeb++;
continue;
}
f = h->facet();
n = f->getUnitNormal();
sum = (sum + n);
hedgeb++;
}
while (hedgeb != hedgee);
sum = sum / std::sqrt(sum * sum);
return sum;
}