mirror of https://github.com/CGAL/cgal
Document GH variations
This commit is contained in:
parent
ee123baeb1
commit
271589030d
|
|
@ -0,0 +1,60 @@
|
|||
namespace CGAL {
|
||||
namespace Surface_mesh_simplification {
|
||||
|
||||
/*!
|
||||
\ingroup PkgSurfaceMeshSimplificationRef
|
||||
|
||||
The class `GarlandHeckbert_plane_policies` regroups the cost and placement policies
|
||||
based on the Garland-Heckbert "Classic Plane" strategy
|
||||
(Section \ref SurfaceMeshSimplificationGarlandHeckbertStrategy).
|
||||
This class implements the original Garland-Heckbert quadric error metric strategy,
|
||||
as described in their seminal paper \cgalCite{gh-ssqem-97}.
|
||||
|
||||
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_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
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
namespace CGAL {
|
||||
namespace Surface_mesh_simplification {
|
||||
|
||||
/*!
|
||||
\ingroup PkgSurfaceMeshSimplificationRef
|
||||
|
||||
The class `GarlandHeckbert_probabilistic_plane_policies` regroups the cost and placement policies
|
||||
based on the "Probabilistic Plane" strategy of Trettner and Kobbelt \cgalCite{tk-frqmpq-20}.
|
||||
This policy enhances the original Garland-Heckbert quadric error metrics,
|
||||
by adding notions of variance (i.e., noise) to the positions of the vertices and the normals of faces.
|
||||
Compared to the "classic" plane strategy, this strategy sacrifices tightness to the input
|
||||
for speed and 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_plane_policies`
|
||||
\sa `GarlandHeckbert_triangle_policies`
|
||||
\sa `GarlandHeckbert_probabilistic_triangle_policies`
|
||||
*/
|
||||
template <typename TriangleMesh, typename GeomTraits>
|
||||
class GarlandHeckbert_probabilistic_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 Probabilistic Plane policies.
|
||||
*/
|
||||
GarlandHeckbert_probabilistic_plane_policies(TriangleMesh& tmesh);
|
||||
|
||||
/// @}
|
||||
|
||||
/// \name Accessors
|
||||
/// @{
|
||||
|
||||
const Get_cost& get_cost() const;
|
||||
const Get_placement& get_placement() const;
|
||||
|
||||
/// @}
|
||||
};
|
||||
|
||||
} // namespace Surface_mesh_simplification
|
||||
} // namespace CGAL
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
namespace CGAL {
|
||||
namespace Surface_mesh_simplification {
|
||||
|
||||
/*!
|
||||
\ingroup PkgSurfaceMeshSimplificationRef
|
||||
|
||||
The class `GarlandHeckbert_probabilistic_triangle_policies` regroups the cost and placement policies
|
||||
based on the "Probabilistic Triangle" strategy of Trettner and Kobbelt \cgalCite{tk-frqmpq-20}.
|
||||
This policy enhances the original Garland-Heckbert quadric error metrics,
|
||||
by adding notions of variance (i.e., noise) to the positions of the vertices and the normals of faces.
|
||||
Compared to the "classic" triangle strategy, this strategy sacrifices tightness to the input
|
||||
for speed and 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_plane_policies`
|
||||
\sa `GarlandHeckbert_probabilistic_plane_policies`
|
||||
\sa `GarlandHeckbert_triangle_policies`
|
||||
*/
|
||||
template <typename TriangleMesh, typename GeomTraits>
|
||||
class GarlandHeckbert_probabilistic_triangle_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 "Probabilistic Triangle" policies.
|
||||
*/
|
||||
GarlandHeckbert_probabilistic_triangle_policies(TriangleMesh& tmesh);
|
||||
|
||||
/// @}
|
||||
|
||||
/// \name Accessors
|
||||
/// @{
|
||||
|
||||
const Get_cost& get_cost() const;
|
||||
const Get_placement& get_placement() const;
|
||||
|
||||
/// @}
|
||||
};
|
||||
|
||||
} // namespace Surface_mesh_simplification
|
||||
} // namespace CGAL
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
namespace CGAL {
|
||||
namespace Surface_mesh_simplification {
|
||||
|
||||
/*!
|
||||
\ingroup PkgSurfaceMeshSimplificationRef
|
||||
|
||||
The class `GarlandHeckbert_triangle_policies` regroups the cost and placement policies
|
||||
using the triangle-based Garland-Heckbert strategy (Section \ref SurfaceMeshSimplificationGarlandHeckbertStrategy).
|
||||
This strategy considers distances to triangular faces, rather than the supporting planes of the faces
|
||||
as in `GarlandHeckbert_plane_policies`.
|
||||
|
||||
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_probabilistic_plane_policies`
|
||||
\sa `GarlandHeckbert_probabilistic_triangle_policies`
|
||||
*/
|
||||
template <typename TriangleMesh, typename GeomTraits>
|
||||
class GarlandHeckbert_triangle_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 Triangle policies.
|
||||
*/
|
||||
GarlandHeckbert_triangle_policies(TriangleMesh& tmesh);
|
||||
|
||||
/// @}
|
||||
|
||||
/// \name Accessors
|
||||
/// @{
|
||||
|
||||
const Get_cost& get_cost() const;
|
||||
const Get_placement& get_placement() const;
|
||||
|
||||
/// @}
|
||||
};
|
||||
|
||||
} // namespace Surface_mesh_simplification
|
||||
} // namespace CGAL
|
||||
Loading…
Reference in New Issue