This commit is contained in:
Andreas Fabri 2015-04-29 09:12:57 +02:00
parent 06f55673a5
commit 8fa4a1e9c7
2 changed files with 19 additions and 13 deletions

View File

@ -162,15 +162,15 @@ would be very different. These heuristic facts can be used for
boundary detection. boundary detection.
More specifically, we discard any candidate triangle \f$ t \f$, for an edge \f$ e \f$ More specifically, we discard any candidate triangle \f$ t \f$, for an edge \f$ e \f$
such that \f$ p(t) < 0\f$, and \f$ r_t > k r_{t'}\f$ where \f$ t'\f$ is such that \f$ p(t) < 0\f$, and \f$ r_t > \mathrm{radius\_ratio\_bound} \times r_{t'}\f$ where \f$ t'\f$ is
the triangle on the surface incident on \f$ e \f$. The parameter \f$ k \f$ the triangle on the surface incident on \f$ e \f$. The parameter \f$\mathrm{radius\_ratio\_bound}\f$
is specified by the user and is set by default to 5. is specified by the user and is set by default to 5.
For the example given in \cgalFigureRef{figAFSRplausible}, we said that if there For the example given in \cgalFigureRef{figAFSRplausible}, we said that if there
was no triangle `t3` in the green wedge, triangle `t4` would be chosen as it has was no triangle `t3` in the green wedge, triangle `t4` would be chosen as it has
the smallest angle between its normal and the normal of triangle `t'`. the smallest angle between its normal and the normal of triangle `t'`.
However, in case its radius was \f$ k \f$ times larger than the radius of triangle `t'`, However, in case its radius was \f$\mathrm{radius\_ratio\_bound}\f$ times larger than the radius of triangle `t'`,
triangle `t2` would be chosen, assuming that its radius is not \f$ k \f$ times larger. triangle `t2` would be chosen, assuming that its radius is not \f$\mathrm{radius\_ratio\_bound}\f$ times larger.
Note that this heuristic implies that Note that this heuristic implies that

View File

@ -108,13 +108,16 @@ Advancing_front_surface_reconstruction(Dt& dt);
/// @{ /// @{
/*! /*!
calls the surface reconstruction function with the default parameters. runs the surface reconstruction function with the default parameters.
\param k described in Section \ref AFSR_Boundaries \param radius_ratio_bound candidates incident to surface triangles which are not in the beta-wedge
\param beta described in Section \ref AFSR_Selection are discarded, if the ratio of their radius and the radius of the surface triangle is larger than `radius_ratio_bound`.
Described in Section \ref AFSR_Boundaries
\param beta half the angle of the wedge in which only the radius of triangles counts for the plausibility of candidates.
Described in Section \ref AFSR_Selection
*/ */
void run(double k=5, double beta= 0.52); void run(double radius_ratio_bound =5 , double beta = 0.52);
/*! /*!
returns the reconstructed surface. returns the reconstructed surface.
@ -190,15 +193,18 @@ describing the faces of the reconstructed surface.
\tparam IndicesOutputIterator must be an output iterator to which \tparam IndicesOutputIterator must be an output iterator to which
`CGAL::cpp11::tuple<std::size_t,std::size_t,std::size_t>` can be assigned. `CGAL::cpp11::tuple<std::size_t,std::size_t,std::size_t>` can be assigned.
\param begin iterator on the first point of the sequence \param b iterator on the first point of the sequence
\param end past the end iterator the point sequence \param e past the end iterator of the point sequence
\param out output iterator \param out output iterator
\param K described in Section \ref AFSR_Boundaries \param radius_ratio_bound candidates incident to surface triangles which are not in the beta-wedge
\param beta described in Section \ref AFSR_Selection are discarded, if the ratio of their radius and the radius of the surface triangle is larger than `radius_ratio_bound`.
Described in Section \ref AFSR_Boundaries
\param beta half the angle of the wedge in which only the radius of triangles counts for the plausibility of candidates.
Described in Section \ref AFSR_Selection
*/ */
template <class PointInputIterator, IndicesOutputIterator> template <class PointInputIterator, IndicesOutputIterator>
IndicesOutputIterator advancing_front_surface_reconstruction(PointInputIterator b, PointInputIterator e, IndicesOutputIterator out, double k=5, double beta= 0.18 ); IndicesOutputIterator advancing_front_surface_reconstruction(PointInputIterator b, PointInputIterator e, IndicesOutputIterator out, double radius_ratio_bound = 5, double beta= 0.52 );
} /* end namespace CGAL */ } /* end namespace CGAL */