mirror of https://github.com/CGAL/cgal
fix scoped metric and class naming
This commit is contained in:
parent
9e4a7a98e2
commit
618891c53c
|
|
@ -16,8 +16,8 @@ typedef boost::property_map<Polyhedron, boost::vertex_point_t>::type VertexPoint
|
|||
typedef CGAL::VSA::Mesh_approximation<Polyhedron, VertexPointMap> Mesh_approximation;
|
||||
|
||||
// L21 error metric
|
||||
typedef Mesh_approximation::L21_error_metric Metric;
|
||||
typedef Mesh_approximation::L21_proxy_fitting Proxy_fitting;
|
||||
typedef Mesh_approximation::Error_metric Metric;
|
||||
typedef Mesh_approximation::Proxy_fitting Proxy_fitting;
|
||||
|
||||
int main()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,19 +19,19 @@ typedef Polyhedron::Facet_handle Facet_handle;
|
|||
typedef Polyhedron::Halfedge_handle Halfedge_handle;
|
||||
typedef Polyhedron::Facet_iterator Facet_iterator;
|
||||
|
||||
typedef boost::property_map<Polyhedron, boost::vertex_point_t>::type VertexPointMap;
|
||||
typedef boost::associative_property_map<std::map<Facet_handle, FT> > FacetAreaMap;
|
||||
typedef boost::associative_property_map<std::map<Facet_handle, Point> > FacetCenterMap;
|
||||
typedef boost::property_map<Polyhedron, boost::vertex_point_t>::type Vertex_point_map;
|
||||
typedef boost::associative_property_map<std::map<Facet_handle, FT> > Facet_area_map;
|
||||
typedef boost::associative_property_map<std::map<Facet_handle, Point> > Facet_center_map;
|
||||
|
||||
// use point as proxy
|
||||
typedef Point PointProxy; // TOFIX: CGAL capitalization -> Point_proxy (everywhere)
|
||||
typedef Point Point_proxy;
|
||||
|
||||
// user-defined "compact" error metric
|
||||
struct CompactMetric {
|
||||
typedef PointProxy Proxy;
|
||||
struct Compact_metric {
|
||||
typedef Point_proxy Proxy;
|
||||
|
||||
// we keep a precomputed property map to speed up computations
|
||||
CompactMetric(const FacetCenterMap &_center_pmap)
|
||||
Compact_metric(const Facet_center_map &_center_pmap)
|
||||
: center_pmap(_center_pmap) {}
|
||||
|
||||
// compute and return error from a facet to a proxy,
|
||||
|
|
@ -42,15 +42,15 @@ struct CompactMetric {
|
|||
CGAL::squared_distance(center_pmap[f], px))));
|
||||
}
|
||||
|
||||
const FacetCenterMap center_pmap;
|
||||
const Facet_center_map center_pmap;
|
||||
};
|
||||
|
||||
// proxy fitting functor
|
||||
struct PointProxyFitting {
|
||||
typedef PointProxy Proxy;
|
||||
struct Point_proxy_fitting {
|
||||
typedef Point_proxy Proxy;
|
||||
|
||||
// we keep a precomputed property map to speed up computations
|
||||
PointProxyFitting(const FacetCenterMap &_center_pmap, const FacetAreaMap &_area_pmap)
|
||||
Point_proxy_fitting(const Facet_center_map &_center_pmap, const Facet_area_map &_area_pmap)
|
||||
: center_pmap(_center_pmap), area_pmap(_area_pmap) {}
|
||||
|
||||
// template functor to compute a best-fit
|
||||
|
|
@ -68,12 +68,12 @@ struct PointProxyFitting {
|
|||
return CGAL::ORIGIN + center;
|
||||
}
|
||||
|
||||
const FacetCenterMap center_pmap;
|
||||
const FacetAreaMap area_pmap;
|
||||
const Facet_center_map center_pmap;
|
||||
const Facet_area_map area_pmap;
|
||||
};
|
||||
|
||||
typedef CGAL::VSA::Mesh_approximation<Polyhedron, VertexPointMap,
|
||||
CompactMetric, PointProxyFitting> Approximation;
|
||||
typedef CGAL::VSA::Mesh_approximation<Polyhedron, Vertex_point_map,
|
||||
Compact_metric, Point_proxy_fitting> Approximation;
|
||||
|
||||
int main()
|
||||
{
|
||||
|
|
@ -98,16 +98,16 @@ int main()
|
|||
facet_areas.insert(std::pair<Facet_handle, FT>(fitr, area));
|
||||
facet_centers.insert(std::pair<Facet_handle, Point>(fitr, barycenter));
|
||||
}
|
||||
FacetAreaMap area_pmap(facet_areas);
|
||||
FacetCenterMap center_pmap(facet_centers);
|
||||
Facet_area_map area_pmap(facet_areas);
|
||||
Facet_center_map center_pmap(facet_centers);
|
||||
|
||||
// create compact metric approximation algorithm instance
|
||||
Approximation approx(input,
|
||||
get(boost::vertex_point, const_cast<Polyhedron &>(input)));
|
||||
|
||||
// construct metric and fitting functors
|
||||
CompactMetric metric(center_pmap);
|
||||
PointProxyFitting proxy_fitting(center_pmap, area_pmap);
|
||||
Compact_metric metric(center_pmap);
|
||||
Point_proxy_fitting proxy_fitting(center_pmap, area_pmap);
|
||||
approx.set_metric(metric, proxy_fitting);
|
||||
|
||||
// approximation via 200 proxies and 30 iterations
|
||||
|
|
|
|||
|
|
@ -57,39 +57,39 @@ namespace VSA {
|
|||
*/
|
||||
template <typename TriangleMesh,
|
||||
typename VertexPointMap,
|
||||
typename ErrorMetric_ = CGAL::Default,
|
||||
typename ProxyFitting_ = CGAL::Default,
|
||||
typename GeomTraits_ = CGAL::Default>
|
||||
typename ErrorMetric = CGAL::Default,
|
||||
typename ProxyFitting = CGAL::Default,
|
||||
typename GeomTraits = CGAL::Default>
|
||||
class Mesh_approximation {
|
||||
// public typedefs
|
||||
public:
|
||||
// Default typdefs
|
||||
// Default typedefs
|
||||
/// Geometric trait type
|
||||
typedef typename CGAL::Default::Get<
|
||||
GeomTraits_,
|
||||
GeomTraits,
|
||||
typename Kernel_traits<
|
||||
typename boost::property_traits<VertexPointMap>::value_type
|
||||
>::Kernel >::type GeomTraits;
|
||||
>::Kernel >::type Geom_traits;
|
||||
/// ErrorMetric type
|
||||
typedef typename CGAL::Default::Get<ErrorMetric_,
|
||||
CGAL::L21Metric<TriangleMesh, VertexPointMap, false, GeomTraits> >::type ErrorMetric;
|
||||
typedef typename CGAL::Default::Get<ErrorMetric,
|
||||
CGAL::VSA::L21_metric<TriangleMesh, VertexPointMap, false, Geom_traits> >::type Error_metric;
|
||||
/// ProxyFitting type
|
||||
typedef typename CGAL::Default::Get<ProxyFitting_,
|
||||
CGAL::L21ProxyFitting<TriangleMesh, VertexPointMap, GeomTraits> >::type ProxyFitting;
|
||||
typedef typename CGAL::Default::Get<ProxyFitting,
|
||||
CGAL::VSA::L21_proxy_fitting<TriangleMesh, VertexPointMap, Geom_traits> >::type Proxy_fitting;
|
||||
/// Proxy type
|
||||
typedef typename ErrorMetric::Proxy Proxy;
|
||||
typedef typename Error_metric::Proxy Proxy;
|
||||
|
||||
// private typedefs and data member
|
||||
private:
|
||||
// GeomTraits typedefs
|
||||
typedef typename GeomTraits::FT FT;
|
||||
typedef typename GeomTraits::Point_3 Point_3;
|
||||
typedef typename GeomTraits::Vector_3 Vector_3;
|
||||
typedef typename GeomTraits::Plane_3 Plane_3;
|
||||
typedef typename GeomTraits::Construct_vector_3 Construct_vector_3;
|
||||
typedef typename GeomTraits::Construct_scaled_vector_3 Construct_scaled_vector_3;
|
||||
typedef typename GeomTraits::Construct_sum_of_vectors_3 Construct_sum_of_vectors_3;
|
||||
typedef typename GeomTraits::Compute_scalar_product_3 Compute_scalar_product_3;
|
||||
// Geom_traits typedefs
|
||||
typedef typename Geom_traits::FT FT;
|
||||
typedef typename Geom_traits::Point_3 Point_3;
|
||||
typedef typename Geom_traits::Vector_3 Vector_3;
|
||||
typedef typename Geom_traits::Plane_3 Plane_3;
|
||||
typedef typename Geom_traits::Construct_vector_3 Construct_vector_3;
|
||||
typedef typename Geom_traits::Construct_scaled_vector_3 Construct_scaled_vector_3;
|
||||
typedef typename Geom_traits::Construct_sum_of_vectors_3 Construct_sum_of_vectors_3;
|
||||
typedef typename Geom_traits::Compute_scalar_product_3 Compute_scalar_product_3;
|
||||
|
||||
// graph_traits typedefs
|
||||
typedef typename boost::graph_traits<TriangleMesh>::vertex_descriptor vertex_descriptor;
|
||||
|
|
@ -216,9 +216,9 @@ private:
|
|||
// The mesh vertex point map.
|
||||
VertexPointMap point_pmap;
|
||||
// The error metric.
|
||||
const ErrorMetric *fit_error;
|
||||
const Error_metric *fit_error;
|
||||
// The proxy fitting functor.
|
||||
const ProxyFitting *proxy_fitting;
|
||||
const Proxy_fitting *proxy_fitting;
|
||||
|
||||
Construct_vector_3 vector_functor;
|
||||
Construct_scaled_vector_3 scale_functor;
|
||||
|
|
@ -255,7 +255,7 @@ public:
|
|||
proxy_fitting(NULL),
|
||||
fproxy_map(internal_fidx_map),
|
||||
vanchor_map(internal_vidx_map) {
|
||||
GeomTraits traits;
|
||||
Geom_traits traits;
|
||||
vector_functor = traits.construct_vector_3_object();
|
||||
scale_functor = traits.construct_scaled_vector_3_object();
|
||||
sum_functor = traits.construct_sum_of_vectors_3_object();
|
||||
|
|
@ -275,7 +275,7 @@ public:
|
|||
proxy_fitting(NULL),
|
||||
fproxy_map(internal_fidx_map),
|
||||
vanchor_map(internal_vidx_map) {
|
||||
GeomTraits traits;
|
||||
Geom_traits traits;
|
||||
vector_functor = traits.construct_vector_3_object();
|
||||
scale_functor = traits.construct_scaled_vector_3_object();
|
||||
sum_functor = traits.construct_sum_of_vectors_3_object();
|
||||
|
|
@ -299,8 +299,8 @@ public:
|
|||
* @param _error_metric a `ErrorMetric` functor.
|
||||
* @param _proxy_fitting a `ProxyFitting` functor.
|
||||
*/
|
||||
void set_metric(const ErrorMetric &_error_metric,
|
||||
const ProxyFitting &_proxy_fitting) {
|
||||
void set_metric(const Error_metric &_error_metric,
|
||||
const Proxy_fitting &_proxy_fitting) {
|
||||
fit_error = &_error_metric;
|
||||
proxy_fitting = &_proxy_fitting;
|
||||
}
|
||||
|
|
@ -1783,7 +1783,7 @@ private:
|
|||
Plane_3 fit_plane_pca(const FacetIterator &beg, const FacetIterator &end) {
|
||||
CGAL_assertion(beg != end);
|
||||
|
||||
typedef typename GeomTraits::Triangle_3 Triangle_3;
|
||||
typedef typename Geom_traits::Triangle_3 Triangle_3;
|
||||
std::list<Triangle_3> tri_list;
|
||||
for (FacetIterator fitr = beg; fitr != end; ++fitr) {
|
||||
halfedge_descriptor he = halfedge(*fitr, *m_pmesh);
|
||||
|
|
|
|||
|
|
@ -82,20 +82,20 @@ bool mesh_approximation(const TriangleMesh &tm_in,
|
|||
using boost::get_param;
|
||||
using boost::choose_param;
|
||||
|
||||
typedef typename GetGeomTraits<TriangleMesh, NamedParameters>::type GeomTraits;
|
||||
typedef typename GeomTraits::FT FT;
|
||||
typedef typename GetGeomTraits<TriangleMesh, NamedParameters>::type Geom_traits;
|
||||
typedef typename Geom_traits::FT FT;
|
||||
|
||||
typedef typename GetVertexPointMap<TriangleMesh, NamedParameters>::type VPMap;
|
||||
VPMap point_pmap = choose_param(get_param(np, internal_np::vertex_point),
|
||||
get_property_map(vertex_point, const_cast<TriangleMesh &>(tm_in)));
|
||||
|
||||
typedef CGAL::VSA::Mesh_approximation<TriangleMesh, VPMap> VSAL21;
|
||||
typedef typename VSAL21::ErrorMetric L21Metric;
|
||||
typedef typename VSAL21::ProxyFitting L21ProxyFitting;
|
||||
typedef typename VSAL21::Error_metric L21_metric;
|
||||
typedef typename VSAL21::Proxy_fitting L21_proxy_fitting;
|
||||
|
||||
VSAL21 vsa_l21(tm_in, point_pmap);
|
||||
L21Metric l21_metric(tm_in);
|
||||
L21ProxyFitting l21_fitting(tm_in);
|
||||
L21_metric l21_metric(tm_in);
|
||||
L21_proxy_fitting l21_fitting(tm_in);
|
||||
vsa_l21.set_metric(l21_metric, l21_fitting);
|
||||
|
||||
// default random initialization
|
||||
|
|
@ -129,7 +129,7 @@ bool mesh_approximation(const TriangleMesh &tm_in,
|
|||
get_param(np, internal_np::facet_proxy_map), internal_np::vsa_no_output);
|
||||
get_proxy_map(vsa_l21, fproxymap);
|
||||
|
||||
typedef CGAL::Polyhedron_3<GeomTraits> PolyhedronSurface;
|
||||
typedef CGAL::Polyhedron_3<Geom_traits> PolyhedronSurface;
|
||||
PolyhedronSurface tmp_poly;
|
||||
PolyhedronSurface * const tm_out = choose_param(get_param(np, internal_np::output_mesh), &tmp_poly);
|
||||
FT split_criterion = choose_param(get_param(np, internal_np::chord_subdivide), FT(1));
|
||||
|
|
|
|||
|
|
@ -61,20 +61,20 @@ void mesh_segmentation(const TriangleMesh &tm_in, const NamedParameters &np)
|
|||
using boost::get_param;
|
||||
using boost::choose_param;
|
||||
|
||||
typedef typename GetGeomTraits<TriangleMesh, NamedParameters>::type GeomTraits;
|
||||
typedef typename GeomTraits::FT FT;
|
||||
typedef typename GetGeomTraits<TriangleMesh, NamedParameters>::type Geom_traits;
|
||||
typedef typename Geom_traits::FT FT;
|
||||
|
||||
typedef typename GetVertexPointMap<TriangleMesh, NamedParameters>::type VPMap;
|
||||
VPMap point_pmap = choose_param(get_param(np, internal_np::vertex_point),
|
||||
get_property_map(vertex_point, const_cast<TriangleMesh &>(tm_in)));
|
||||
|
||||
typedef CGAL::VSA::Mesh_approximation<TriangleMesh, VPMap> VSAL21;
|
||||
typedef typename VSAL21::ErrorMetric L21Metric;
|
||||
typedef typename VSAL21::ProxyFitting L21ProxyFitting;
|
||||
typedef typename VSAL21::Error_metric L21_metric;
|
||||
typedef typename VSAL21::Proxy_fitting L21_proxy_fitting;
|
||||
|
||||
VSAL21 vsa_l21(tm_in, point_pmap);
|
||||
L21Metric l21_metric(tm_in);
|
||||
L21ProxyFitting l21_fitting(tm_in);
|
||||
L21_metric l21_metric(tm_in);
|
||||
L21_proxy_fitting l21_fitting(tm_in);
|
||||
vsa_l21.set_metric(l21_metric, l21_fitting);
|
||||
|
||||
// default random initialization
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@
|
|||
#include <map>
|
||||
#include <list>
|
||||
|
||||
namespace CGAL
|
||||
{
|
||||
namespace CGAL {
|
||||
namespace VSA {
|
||||
|
||||
/*!
|
||||
* \ingroup PkgTSMA
|
||||
* @brief Plane proxy class for the Variational Shape Approximation algorithm.
|
||||
|
|
@ -26,7 +27,7 @@ namespace CGAL
|
|||
* @tparam GeomTraits geometric traits
|
||||
*/
|
||||
template <typename GeomTraits>
|
||||
class PlaneProxy
|
||||
class Plane_proxy
|
||||
{
|
||||
typedef typename GeomTraits::Vector_3 Vector_3;
|
||||
typedef typename GeomTraits::Plane_3 Plane_3;
|
||||
|
|
@ -58,8 +59,8 @@ template <typename TriangleMesh,
|
|||
= typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
bool with_area_weighing = true,
|
||||
typename GeomTraits = typename TriangleMesh::Traits,
|
||||
typename PlaneProxy = CGAL::PlaneProxy<GeomTraits> >
|
||||
class L21Metric
|
||||
typename PlaneProxy = CGAL::VSA::Plane_proxy<GeomTraits> >
|
||||
class L21_metric
|
||||
{
|
||||
typedef typename GeomTraits::FT FT;
|
||||
typedef typename GeomTraits::Vector_3 Vector_3;
|
||||
|
|
@ -79,7 +80,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor
|
||||
L21Metric(const TriangleMesh &tm, const VertexPointMap &point_pmap)
|
||||
L21_metric(const TriangleMesh &tm, const VertexPointMap &point_pmap)
|
||||
: normal_pmap(facet_normals), area_pmap(facet_areas) {
|
||||
GeomTraits traits;
|
||||
scalar_product_functor = traits.compute_scalar_product_3_object();
|
||||
|
|
@ -120,7 +121,7 @@ template <typename TriangleMesh,
|
|||
bool with_area_weighing,
|
||||
typename GeomTraits,
|
||||
typename PlaneProxy>
|
||||
class L21Metric<TriangleMesh,
|
||||
class L21_metric<TriangleMesh,
|
||||
typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
with_area_weighing,
|
||||
GeomTraits,
|
||||
|
|
@ -145,7 +146,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor
|
||||
L21Metric(const TriangleMesh &tm)
|
||||
L21_metric(const TriangleMesh &tm)
|
||||
: normal_pmap(facet_normals), area_pmap(facet_areas) {
|
||||
GeomTraits traits;
|
||||
scalar_product_functor = traits.compute_scalar_product_3_object();
|
||||
|
|
@ -187,7 +188,7 @@ template <typename TriangleMesh,
|
|||
typename VertexPointMap,
|
||||
typename GeomTraits,
|
||||
typename PlaneProxy>
|
||||
class L21Metric<TriangleMesh,
|
||||
class L21_metric<TriangleMesh,
|
||||
VertexPointMap,
|
||||
false,
|
||||
GeomTraits,
|
||||
|
|
@ -210,7 +211,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor
|
||||
L21Metric(const TriangleMesh &tm, const VertexPointMap &point_pmap)
|
||||
L21_metric(const TriangleMesh &tm, const VertexPointMap &point_pmap)
|
||||
: normal_pmap(facet_normals) {
|
||||
GeomTraits traits;
|
||||
scalar_product_functor = traits.compute_scalar_product_3_object();
|
||||
|
|
@ -247,7 +248,7 @@ private:
|
|||
template <typename TriangleMesh,
|
||||
typename GeomTraits,
|
||||
typename PlaneProxy>
|
||||
class L21Metric<TriangleMesh,
|
||||
class L21_metric<TriangleMesh,
|
||||
typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
false,
|
||||
GeomTraits,
|
||||
|
|
@ -271,7 +272,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor
|
||||
L21Metric(const TriangleMesh &tm)
|
||||
L21_metric(const TriangleMesh &tm)
|
||||
: normal_pmap(facet_normals) {
|
||||
GeomTraits traits;
|
||||
scalar_product_functor = traits.compute_scalar_product_3_object();
|
||||
|
|
@ -322,8 +323,8 @@ template <typename TriangleMesh,
|
|||
typename VertexPointMap
|
||||
= typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
typename GeomTraits = typename TriangleMesh::Traits,
|
||||
typename PlaneProxy = CGAL::PlaneProxy<GeomTraits> >
|
||||
class L21ProxyFitting
|
||||
typename PlaneProxy = CGAL::VSA::Plane_proxy<GeomTraits> >
|
||||
class L21_proxy_fitting
|
||||
{
|
||||
typedef typename GeomTraits::FT FT;
|
||||
typedef typename GeomTraits::Vector_3 Vector_3;
|
||||
|
|
@ -342,7 +343,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor.
|
||||
L21ProxyFitting(const TriangleMesh &tm, const VertexPointMap &point_pmap)
|
||||
L21_proxy_fitting(const TriangleMesh &tm, const VertexPointMap &point_pmap)
|
||||
: normal_pmap(facet_normals), area_pmap(facet_areas) {
|
||||
GeomTraits traits;
|
||||
sum_functor = traits.construct_sum_of_vectors_3_object();
|
||||
|
|
@ -395,7 +396,7 @@ private:
|
|||
template <typename TriangleMesh,
|
||||
typename GeomTraits,
|
||||
typename PlaneProxy>
|
||||
class L21ProxyFitting<TriangleMesh,
|
||||
class L21_proxy_fitting<TriangleMesh,
|
||||
typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
GeomTraits,
|
||||
PlaneProxy>
|
||||
|
|
@ -418,7 +419,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor.
|
||||
L21ProxyFitting(const TriangleMesh &tm)
|
||||
L21_proxy_fitting(const TriangleMesh &tm)
|
||||
: normal_pmap(facet_normals), area_pmap(facet_areas) {
|
||||
GeomTraits traits;
|
||||
sum_functor = traits.construct_sum_of_vectors_3_object();
|
||||
|
|
@ -486,8 +487,8 @@ template <typename TriangleMesh,
|
|||
typename VertexPointMap
|
||||
= typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
typename GeomTraits = typename TriangleMesh::Traits,
|
||||
typename PlaneProxy = CGAL::PlaneProxy<GeomTraits> >
|
||||
class L2Metric
|
||||
typename PlaneProxy = CGAL::VSA::Plane_proxy<GeomTraits> >
|
||||
class L2_metric
|
||||
{
|
||||
typedef typename GeomTraits::FT FT;
|
||||
typedef typename GeomTraits::Point_3 Point_3;
|
||||
|
|
@ -502,7 +503,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor
|
||||
L2Metric(const TriangleMesh &tm, const VertexPointMap &_point_pmap)
|
||||
L2_metric(const TriangleMesh &tm, const VertexPointMap &_point_pmap)
|
||||
: mesh(&tm), area_pmap(facet_areas), point_pmap(_point_pmap) {
|
||||
BOOST_FOREACH(face_descriptor f, faces(tm)) {
|
||||
const halfedge_descriptor he = halfedge(f, tm);
|
||||
|
|
@ -515,7 +516,7 @@ public:
|
|||
}
|
||||
|
||||
// returns l2 fitting error from facet f to proxy px.
|
||||
FT operator()(const face_descriptor &f, const PlaneProxy &px) const {
|
||||
FT operator()(const face_descriptor &f, const Proxy &px) const {
|
||||
halfedge_descriptor he = halfedge(f, *mesh);
|
||||
const Point_3 &p0 = point_pmap[source(he, *mesh)];
|
||||
const Point_3 &p1 = point_pmap[target(he, *mesh)];
|
||||
|
|
@ -541,7 +542,7 @@ private:
|
|||
template <typename TriangleMesh,
|
||||
typename GeomTraits,
|
||||
typename PlaneProxy>
|
||||
class L2Metric<TriangleMesh,
|
||||
class L2_metric<TriangleMesh,
|
||||
typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
GeomTraits,
|
||||
PlaneProxy>
|
||||
|
|
@ -560,7 +561,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// constructor
|
||||
L2Metric(const TriangleMesh &tm)
|
||||
L2_metric(const TriangleMesh &tm)
|
||||
: mesh(&tm), area_pmap(facet_areas),
|
||||
point_pmap(get(boost::vertex_point, const_cast<TriangleMesh &>(tm))) {
|
||||
BOOST_FOREACH(face_descriptor f, faces(tm)) {
|
||||
|
|
@ -574,7 +575,7 @@ public:
|
|||
}
|
||||
|
||||
// returns l2 fitting error from facet f to proxy px.
|
||||
FT operator()(const face_descriptor &f, const PlaneProxy &px) const {
|
||||
FT operator()(const face_descriptor &f, const Proxy &px) const {
|
||||
halfedge_descriptor he = halfedge(f, *mesh);
|
||||
const Point_3 &p0 = point_pmap[source(he, *mesh)];
|
||||
const Point_3 &p1 = point_pmap[target(he, *mesh)];
|
||||
|
|
@ -615,8 +616,8 @@ template <typename TriangleMesh,
|
|||
typename VertexPointMap
|
||||
= typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
typename GeomTraits = typename TriangleMesh::Traits,
|
||||
typename PlaneProxy = CGAL::PlaneProxy<GeomTraits> >
|
||||
class L2ProxyFitting
|
||||
typename PlaneProxy = CGAL::VSA::Plane_proxy<GeomTraits> >
|
||||
class L2_proxy_fitting
|
||||
{
|
||||
typedef typename GeomTraits::Point_3 Point_3;
|
||||
typedef typename GeomTraits::Triangle_3 Triangle_3;
|
||||
|
|
@ -627,7 +628,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// construct L2 proxy fitting functor from a triangle mesh and the vertex point map.
|
||||
L2ProxyFitting(const TriangleMesh &_mesh, const VertexPointMap &_point_pmap)
|
||||
L2_proxy_fitting(const TriangleMesh &_mesh, const VertexPointMap &_point_pmap)
|
||||
: mesh(&_mesh), point_pmap(_point_pmap) {}
|
||||
|
||||
// returns proxy fitted from range of facets.
|
||||
|
|
@ -664,7 +665,7 @@ private:
|
|||
template <typename TriangleMesh,
|
||||
typename GeomTraits,
|
||||
typename PlaneProxy>
|
||||
class L2ProxyFitting<TriangleMesh,
|
||||
class L2_proxy_fitting<TriangleMesh,
|
||||
typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type,
|
||||
GeomTraits,
|
||||
PlaneProxy>
|
||||
|
|
@ -681,7 +682,7 @@ public:
|
|||
typedef PlaneProxy Proxy;
|
||||
|
||||
// construct L2 proxy fitting functor from a triangle mesh.
|
||||
L2ProxyFitting(const TriangleMesh &_mesh)
|
||||
L2_proxy_fitting(const TriangleMesh &_mesh)
|
||||
: mesh(&_mesh),
|
||||
point_pmap(get(boost::vertex_point, const_cast<TriangleMesh &>(_mesh))) {}
|
||||
|
||||
|
|
@ -715,6 +716,7 @@ private:
|
|||
const VertexPointMap point_pmap;
|
||||
};
|
||||
|
||||
} // end namespace VSA
|
||||
} // end namespace CGAL
|
||||
|
||||
#endif // CGAL_SURFACE_MESH_APPROXIMATION_VSA_METRICS_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue