mirror of https://github.com/CGAL/cgal
Add page of GH_plane_and_line_policies
This commit is contained in:
parent
82e9d4e5b9
commit
d5f5b7b4f0
|
|
@ -0,0 +1,64 @@
|
||||||
|
namespace CGAL {
|
||||||
|
namespace Surface_mesh_simplification {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\ingroup PkgSurfaceMeshSimplificationRef
|
||||||
|
|
||||||
|
The class `GarlandHeckbert_plane_plus_line_policies` regroups the cost and placement policies
|
||||||
|
based on the Garland-Heckbert "Plane plus line" strategy of Liu et al. \cgalCite{10.1111:cgf.70184}
|
||||||
|
(Section \ref SurfaceMeshSimplificationGarlandHeckbertStrategy).
|
||||||
|
This policy enhances the original Garland-Heckbert quadric error metrics,
|
||||||
|
by adding to the cost the distance to the line passing through the input vertice and aligned with their normals.
|
||||||
|
Compared to the "classic" plane strategy, this strategy improces the speed and the quality of the result.
|
||||||
|
(Section \ref SurfaceMeshSimplificationGarlandHeckbertStrategy).
|
||||||
|
|
||||||
|
Both the cost and the placement policies must be used together as they internally use
|
||||||
|
and share information associating quadrics to vertices.
|
||||||
|
Note however, that they may still be wrapped with behavior modifying classes
|
||||||
|
such as `Constrained_placement` or `Bounded_normal_change_placement`.
|
||||||
|
|
||||||
|
\tparam TriangleMesh is the type of surface mesh being simplified, and must be a model
|
||||||
|
of the `MutableFaceGraph` and `HalfedgeListGraph` concepts.
|
||||||
|
\tparam GeomTraits must be a model of `Kernel`. If you have passed a traits class in the optional
|
||||||
|
named parameters in the call to `edge_collapse()`, the types must be identical.
|
||||||
|
|
||||||
|
These policies depend on the third party \ref thirdpartyEigen library.
|
||||||
|
|
||||||
|
\sa `GarlandHeckbert_policies`
|
||||||
|
\sa `GarlandHeckbert_plane_policies`
|
||||||
|
\sa `GarlandHeckbert_probabilistic_plane_policies`
|
||||||
|
\sa `GarlandHeckbert_triangle_policies`
|
||||||
|
\sa `GarlandHeckbert_probabilistic_triangle_policies`
|
||||||
|
*/
|
||||||
|
template <typename TriangleMesh, typename GeomTraits>
|
||||||
|
class GarlandHeckbert_plane_policies
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/// The type of the Garland Heckbert cost functor, a model of the concept `GetCost`
|
||||||
|
typedef unspecified_type Get_cost;
|
||||||
|
|
||||||
|
/// The type of the Garland Heckbert placement functor, a model of the concept `GetPlacement`
|
||||||
|
typedef unspecified_type Get_placement;
|
||||||
|
|
||||||
|
/// \name Creation
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
initializes the Garland-Heckbert Plane policies.
|
||||||
|
*/
|
||||||
|
GarlandHeckbert_plane_policies(TriangleMesh& tmesh);
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Accessors
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
const Get_cost& get_cost() const;
|
||||||
|
const Get_placement& get_placement() const;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Surface_mesh_simplification
|
||||||
|
} // namespace CGAL
|
||||||
|
|
@ -426,7 +426,7 @@ The implementation of the Garland-Heckbert simplification policies is the result
|
||||||
of Baskın Şenbaşlar (Google Summer of Code 2019), and Julian Komaromy (Google Summer of Code 2021)
|
of Baskın Şenbaşlar (Google Summer of Code 2019), and Julian Komaromy (Google Summer of Code 2021)
|
||||||
They both were mentored by Mael Rouxel-Labbé, who also contributed to the code and to the documentation.
|
They both were mentored by Mael Rouxel-Labbé, who also contributed to the code and to the documentation.
|
||||||
|
|
||||||
Valque Léo added the `GarlandHeckbert_plane_and_line_policies` functionality in \cgal 6.2.
|
Léo Valque added the `GarlandHeckbert_plane_and_line_policies` functionality in \cgal 6.2.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
} /* namespace CGAL */
|
} /* namespace CGAL */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue