mirror of https://github.com/CGAL/cgal
36 lines
701 B
C++
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;
|
|
}
|