mirror of https://github.com/CGAL/cgal
Fixed const correctness in SMP
This commit is contained in:
parent
62979fc9b5
commit
b17c60f4d8
|
|
@ -52,7 +52,7 @@ Error_code parameterize_border(const TriangleMesh& mesh);
|
||||||
Indicate if the shape is convex.
|
Indicate if the shape is convex.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
bool is_border_convex();
|
bool is_border_convex() const;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ protected:
|
||||||
/// Compute w_ij = (i,j), coefficient of matrix A for j neighbor vertex of i.
|
/// Compute w_ij = (i,j), coefficient of matrix A for j neighbor vertex of i.
|
||||||
virtual NT compute_w_ij(const TriangleMesh& /* mesh */,
|
virtual NT compute_w_ij(const TriangleMesh& /* mesh */,
|
||||||
vertex_descriptor /* main_vertex_v_i */,
|
vertex_descriptor /* main_vertex_v_i */,
|
||||||
vertex_around_target_circulator /* neighbor_vertex_v_j */ )
|
vertex_around_target_circulator /* neighbor_vertex_v_j */ ) const
|
||||||
{
|
{
|
||||||
/// In the Tutte Barycentric Mapping algorithm, we have w_ij = 1,
|
/// In the Tutte Barycentric Mapping algorithm, we have w_ij = 1,
|
||||||
/// for j neighbor vertex of i.
|
/// for j neighbor vertex of i.
|
||||||
|
|
|
||||||
|
|
@ -83,12 +83,13 @@ private:
|
||||||
protected:
|
protected:
|
||||||
virtual double compute_edge_length(const TriangleMesh& mesh,
|
virtual double compute_edge_length(const TriangleMesh& mesh,
|
||||||
vertex_descriptor source,
|
vertex_descriptor source,
|
||||||
vertex_descriptor target) = 0;
|
vertex_descriptor target) const = 0;
|
||||||
|
|
||||||
// Private operations
|
// Private operations
|
||||||
private:
|
private:
|
||||||
/// Compute the total length of the border
|
/// Compute the total length of the border
|
||||||
double compute_border_length(const TriangleMesh& mesh, halfedge_descriptor bhd)
|
double compute_border_length(const TriangleMesh& mesh,
|
||||||
|
halfedge_descriptor bhd) const
|
||||||
{
|
{
|
||||||
double len = 0.0;
|
double len = 0.0;
|
||||||
BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(bhd, mesh)) {
|
BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(bhd, mesh)) {
|
||||||
|
|
@ -140,7 +141,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicate if border's shape is convex.
|
/// Indicate if border's shape is convex.
|
||||||
bool is_border_convex() { return true; }
|
bool is_border_convex() const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -180,7 +181,7 @@ protected:
|
||||||
/// Compute the length of an edge.
|
/// Compute the length of an edge.
|
||||||
virtual double compute_edge_length(const TriangleMesh& /* mesh */,
|
virtual double compute_edge_length(const TriangleMesh& /* mesh */,
|
||||||
vertex_descriptor /* source */,
|
vertex_descriptor /* source */,
|
||||||
vertex_descriptor /* target */)
|
vertex_descriptor /* target */) const
|
||||||
{
|
{
|
||||||
/// Uniform border parameterization: points are equally spaced.
|
/// Uniform border parameterization: points are equally spaced.
|
||||||
return 1.;
|
return 1.;
|
||||||
|
|
@ -230,7 +231,7 @@ protected:
|
||||||
/// Compute the length of an edge.
|
/// Compute the length of an edge.
|
||||||
virtual double compute_edge_length(const TriangleMesh& mesh,
|
virtual double compute_edge_length(const TriangleMesh& mesh,
|
||||||
vertex_descriptor source,
|
vertex_descriptor source,
|
||||||
vertex_descriptor target)
|
vertex_descriptor target) const
|
||||||
{
|
{
|
||||||
VPM ppmap = get(vertex_point, mesh);
|
VPM ppmap = get(vertex_point, mesh);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ protected:
|
||||||
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
||||||
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
||||||
vertex_descriptor main_vertex_v_i,
|
vertex_descriptor main_vertex_v_i,
|
||||||
vertex_around_target_circulator neighbor_vertex_v_j)
|
vertex_around_target_circulator neighbor_vertex_v_j) const
|
||||||
{
|
{
|
||||||
typedef typename Parameterizer_traits_3<TriangleMesh>::VPM PPmap;
|
typedef typename Parameterizer_traits_3<TriangleMesh>::VPM PPmap;
|
||||||
PPmap ppmap = get(vertex_point, mesh);
|
PPmap ppmap = get(vertex_point, mesh);
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ protected:
|
||||||
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
||||||
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
||||||
vertex_descriptor main_vertex_v_i,
|
vertex_descriptor main_vertex_v_i,
|
||||||
vertex_around_target_circulator neighbor_vertex_v_j) // its target is main_vertex_v_i
|
vertex_around_target_circulator neighbor_vertex_v_j) const // its target is main_vertex_v_i
|
||||||
{
|
{
|
||||||
typedef typename Parameterizer_traits_3<TriangleMesh>::VPM PPmap;
|
typedef typename Parameterizer_traits_3<TriangleMesh>::VPM PPmap;
|
||||||
PPmap ppmap = get(vertex_point, mesh);
|
PPmap ppmap = get(vertex_point, mesh);
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ protected:
|
||||||
const TriangleMesh& mesh,
|
const TriangleMesh& mesh,
|
||||||
halfedge_descriptor bhd,
|
halfedge_descriptor bhd,
|
||||||
VertexUVmap uvmap,
|
VertexUVmap uvmap,
|
||||||
VertexIndexMap vimap)
|
VertexIndexMap vimap) const
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(bhd, mesh)){
|
BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(bhd, mesh)){
|
||||||
// Get vertex index in sparse linear system
|
// Get vertex index in sparse linear system
|
||||||
|
|
@ -224,7 +224,7 @@ protected:
|
||||||
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
||||||
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
||||||
vertex_descriptor main_vertex_v_i,
|
vertex_descriptor main_vertex_v_i,
|
||||||
vertex_around_target_circulator neighbor_vertex_v_j)
|
vertex_around_target_circulator neighbor_vertex_v_j) const
|
||||||
= 0;
|
= 0;
|
||||||
|
|
||||||
/// Compute the line i of matrix A for i inner vertex:
|
/// Compute the line i of matrix A for i inner vertex:
|
||||||
|
|
@ -242,7 +242,7 @@ protected:
|
||||||
Vector&,
|
Vector&,
|
||||||
const TriangleMesh& mesh,
|
const TriangleMesh& mesh,
|
||||||
vertex_descriptor vertex,
|
vertex_descriptor vertex,
|
||||||
VertexIndexMap vimap)
|
VertexIndexMap vimap) const
|
||||||
{
|
{
|
||||||
int i = get(vimap,vertex);
|
int i = get(vimap,vertex);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,7 @@ private:
|
||||||
const TriangleMesh& mesh,
|
const TriangleMesh& mesh,
|
||||||
UVmap uvmap,
|
UVmap uvmap,
|
||||||
VertexIndexMap vimap,
|
VertexIndexMap vimap,
|
||||||
VertexParameterizedMap vpmap)
|
VertexParameterizedMap vpmap) const
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(vertex_descriptor v, vertices(mesh)){
|
BOOST_FOREACH(vertex_descriptor v, vertices(mesh)){
|
||||||
// Get vertex index in sparse linear system
|
// Get vertex index in sparse linear system
|
||||||
|
|
@ -278,7 +278,7 @@ private:
|
||||||
/// Computes the coordinates of the vertices of a triangle
|
/// Computes the coordinates of the vertices of a triangle
|
||||||
/// in a local 2D orthonormal basis of the triangle's plane.
|
/// in a local 2D orthonormal basis of the triangle's plane.
|
||||||
void project_triangle(const Point_3& p0, const Point_3& p1, const Point_3& p2, // in
|
void project_triangle(const Point_3& p0, const Point_3& p1, const Point_3& p2, // in
|
||||||
Point_2& z0, Point_2& z1, Point_2& z2); // out
|
Point_2& z0, Point_2& z1, Point_2& z2) const; // out
|
||||||
|
|
||||||
/// Create two lines in the linear system per triangle (one for u, one for v).
|
/// Create two lines in the linear system per triangle (one for u, one for v).
|
||||||
///
|
///
|
||||||
|
|
@ -287,7 +287,7 @@ private:
|
||||||
Error_code setup_triangle_relations(LeastSquaresSolver& solver,
|
Error_code setup_triangle_relations(LeastSquaresSolver& solver,
|
||||||
const TriangleMesh& mesh,
|
const TriangleMesh& mesh,
|
||||||
face_descriptor facet,
|
face_descriptor facet,
|
||||||
VertexIndexMap vimap);
|
VertexIndexMap vimap) const;
|
||||||
|
|
||||||
// Private accessors
|
// Private accessors
|
||||||
private:
|
private:
|
||||||
|
|
@ -314,7 +314,7 @@ inline
|
||||||
void
|
void
|
||||||
LSCM_parameterizer_3<TriangleMesh, Border_param, Sparse_LA>::
|
LSCM_parameterizer_3<TriangleMesh, Border_param, Sparse_LA>::
|
||||||
project_triangle(const Point_3& p0, const Point_3& p1, const Point_3& p2, // in
|
project_triangle(const Point_3& p0, const Point_3& p1, const Point_3& p2, // in
|
||||||
Point_2& z0, Point_2& z1, Point_2& z2) // out
|
Point_2& z0, Point_2& z1, Point_2& z2) const // out
|
||||||
{
|
{
|
||||||
Vector_3 X = p1 - p0;
|
Vector_3 X = p1 - p0;
|
||||||
NT X_norm = std::sqrt(X * X);
|
NT X_norm = std::sqrt(X * X);
|
||||||
|
|
@ -359,7 +359,7 @@ LSCM_parameterizer_3<TriangleMesh, Border_param, Sparse_LA>::
|
||||||
setup_triangle_relations(LeastSquaresSolver& solver,
|
setup_triangle_relations(LeastSquaresSolver& solver,
|
||||||
const TriangleMesh& mesh,
|
const TriangleMesh& mesh,
|
||||||
face_descriptor facet,
|
face_descriptor facet,
|
||||||
VertexIndexMap vimap)
|
VertexIndexMap vimap) const
|
||||||
{
|
{
|
||||||
typedef typename boost::property_map<TriangleMesh, boost::vertex_point_t>::const_type PPmap;
|
typedef typename boost::property_map<TriangleMesh, boost::vertex_point_t>::const_type PPmap;
|
||||||
PPmap ppmap = get(vertex_point, mesh);
|
PPmap ppmap = get(vertex_point, mesh);
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ protected:
|
||||||
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
/// \param neighbor_vertex_v_j the vertex of `mesh` with index `j`
|
||||||
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
virtual NT compute_w_ij(const TriangleMesh& mesh,
|
||||||
vertex_descriptor main_vertex_v_i,
|
vertex_descriptor main_vertex_v_i,
|
||||||
vertex_around_target_circulator neighbor_vertex_v_j)
|
vertex_around_target_circulator neighbor_vertex_v_j) const
|
||||||
{
|
{
|
||||||
typedef typename Parameterizer_traits_3<TriangleMesh>::VPM PPmap;
|
typedef typename Parameterizer_traits_3<TriangleMesh>::VPM PPmap;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,12 +99,13 @@ private:
|
||||||
protected:
|
protected:
|
||||||
virtual double compute_edge_length(const TriangleMesh& mesh,
|
virtual double compute_edge_length(const TriangleMesh& mesh,
|
||||||
vertex_descriptor source,
|
vertex_descriptor source,
|
||||||
vertex_descriptor target) = 0;
|
vertex_descriptor target) const = 0;
|
||||||
|
|
||||||
// Private operations
|
// Private operations
|
||||||
private:
|
private:
|
||||||
/// Compute the total length of the border.
|
/// Compute the total length of the border.
|
||||||
double compute_border_length(const TriangleMesh& mesh, halfedge_descriptor bhd)
|
double compute_border_length(const TriangleMesh& mesh,
|
||||||
|
halfedge_descriptor bhd) const
|
||||||
{
|
{
|
||||||
double len = 0.0;
|
double len = 0.0;
|
||||||
BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(bhd, mesh)) {
|
BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(bhd, mesh)) {
|
||||||
|
|
@ -118,7 +119,7 @@ private:
|
||||||
halfedge_around_face_iterator closest_iterator(const TriangleMesh& mesh,
|
halfedge_around_face_iterator closest_iterator(const TriangleMesh& mesh,
|
||||||
halfedge_descriptor bhd,
|
halfedge_descriptor bhd,
|
||||||
Offset_map& offset,
|
Offset_map& offset,
|
||||||
double value)
|
double value) const
|
||||||
{
|
{
|
||||||
halfedge_around_face_iterator b, e, best;
|
halfedge_around_face_iterator b, e, best;
|
||||||
double min = DBL_MAX; // distance for 'best'
|
double min = DBL_MAX; // distance for 'best'
|
||||||
|
|
@ -145,7 +146,7 @@ private:
|
||||||
Error_code set_default_corners(const TriangleMesh& mesh,
|
Error_code set_default_corners(const TriangleMesh& mesh,
|
||||||
halfedge_descriptor bhd,
|
halfedge_descriptor bhd,
|
||||||
VertexParameterizedMap vpmap,
|
VertexParameterizedMap vpmap,
|
||||||
Offset_map& offset)
|
Offset_map& offset) const
|
||||||
{
|
{
|
||||||
// map to [0,4[
|
// map to [0,4[
|
||||||
double len = 0.0; // current position on square in [0, total_len[
|
double len = 0.0; // current position on square in [0, total_len[
|
||||||
|
|
@ -197,7 +198,7 @@ private:
|
||||||
halfedge_descriptor bhd,
|
halfedge_descriptor bhd,
|
||||||
VertexParameterizedMap vpmap,
|
VertexParameterizedMap vpmap,
|
||||||
const char* filename,
|
const char* filename,
|
||||||
Offset_map& offset)
|
Offset_map& offset) const
|
||||||
{
|
{
|
||||||
assert(offset.empty());
|
assert(offset.empty());
|
||||||
|
|
||||||
|
|
@ -352,7 +353,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Indicate if the border's shape is convex.
|
/// Indicate if the border's shape is convex.
|
||||||
bool is_border_convex() { return true; }
|
bool is_border_convex() const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -392,7 +393,7 @@ protected:
|
||||||
/// Compute the length of an edge.
|
/// Compute the length of an edge.
|
||||||
virtual double compute_edge_length(const TriangleMesh& /* mesh */,
|
virtual double compute_edge_length(const TriangleMesh& /* mesh */,
|
||||||
vertex_descriptor /* source */,
|
vertex_descriptor /* source */,
|
||||||
vertex_descriptor /* target */)
|
vertex_descriptor /* target */) const
|
||||||
{
|
{
|
||||||
/// Uniform border parameterization: points are equally spaced.
|
/// Uniform border parameterization: points are equally spaced.
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -440,7 +441,7 @@ protected:
|
||||||
/// Compute the length of an edge.
|
/// Compute the length of an edge.
|
||||||
virtual double compute_edge_length(const TriangleMesh& mesh,
|
virtual double compute_edge_length(const TriangleMesh& mesh,
|
||||||
vertex_descriptor source,
|
vertex_descriptor source,
|
||||||
vertex_descriptor target)
|
vertex_descriptor target) const
|
||||||
{
|
{
|
||||||
VPM ppmap = get(vertex_point, mesh);
|
VPM ppmap = get(vertex_point, mesh);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,7 @@ public:
|
||||||
|
|
||||||
/// Indicate if the border's shape is convex.
|
/// Indicate if the border's shape is convex.
|
||||||
/// Meaningless for free border parameterization algorithms.
|
/// Meaningless for free border parameterization algorithms.
|
||||||
bool is_border_convex() { return false; }
|
bool is_border_convex() const { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace CGAL
|
} // namespace CGAL
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue