Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Surface_mesh_geodesic_distances_3 missing method ?

Subject: CGAL users discussion list

List archive

[cgal-discuss] Surface_mesh_geodesic_distances_3 missing method ?


Chronological Thread 
  • From: Sebastien Tourneux <>
  • To:
  • Subject: [cgal-discuss] Surface_mesh_geodesic_distances_3 missing method ?
  • Date: Fri, 24 Apr 2020 16:56:03 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:xhCmIxTgNkuQ2kyJiR7FBzCdD9psv+yvbD5Q0YIujvd0So/mwa69ZBWN2/xhgRfzUJnB7Loc0qyK6v2mBDVLvsvJmUtBWaQEbwUCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MRW7oR/Ru8ULjodvKKY8wQbVr3VVfOhb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnYUAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhSwaMTMy7WPZhdFqjK9DvhyvpwFxzY3abo6bO/VxYrjQfdYGSWdbRMtdSyJMD4G6YoASD+QBJ+FYr4zlqlUTsxSxHhOjBPjzyj9JmHD227Ax3fomEQHbxgwgGcwBsGnbrd7oM6oSSvy1zK7VzTXZafNZxyr96YfTfx86vPGMU6h8ftbWyUkqDg7IiEibp4/9Pz6NyOgBrmaW4/B9We+vlWIrsRx9rzi1yssxjoTEhoQYwU3e+ypj2oY6P9i4RVZ7YdG6FJtQsDmXN5VzQs87RmFptzs2xqcdtp6mcigG0ogoxxnaa/CfcoiI5AzsVPqJLDtmmX5odqiziwuy/ES+0OHwS8m53ExXoidBktTArnUN2AbS6siDRPt95ECh2TOX2gDI9uFEJl00lbDdK5E/374xmYEevl/eHi/4gkn5kKiWdkA89uiy9+vneqnmpoObN4Jslg7+Pb4hmsimDeslMwgORHSU+fmn1L345kD5W7VLjvgukqbDqpzaJMIbprS4AwBPyIoj5Qy/XH+a14ETknADaV5EYxmalJPBOlfUIfm+A+3srU6rlWJQyvrPJaHgD5OFEn/eirHsYKY1v1VAzxcpy91C97peF79HK/X2DByi/OfEBwM0ZlTni93sD89wg9tHBDC/R5SBOaaXimemo+IiJ+7VOt0LvXP4O6Fj7ePgy3Q+nA1FJPj77d4scHm9W89eDQCcaHvojM0GFDZYtBcwCuftjQ/bCGIBVzOJR6s5owoDJse+F46SFIqwjvqK2yLpRpA=

Hello,

I use the Surface_mesh_geodesic_distances_3 computation and that's really great.

I can use this version :

void CGAL::Heat_method_3::Surface_mesh_geodesic_distances_3< TriangleMesh, Mode, VertexPointMap, LA, Traits >::estimate_geodesic_distances ( VertexDistanceMap  vdm)

(which  the distances for ALL input mesh vertices), but I cannot use the version for only one vertex :

double CGAL::Heat_method_3::Surface_mesh_geodesic_distances_3< TriangleMesh, Mode, VertexPointMap, LA, Traits >::estimate_geodesic_distance ( vertex_descriptor  vd) const

I get the error :

In file included from /work/stourneux/own/CGAL-5.0.2/examples/Heat_method_3/heat_method_surface_mesh.cpp:3:
/usr/include/CGAL/Heat_method_3/Surface_mesh_geodesic_distances_3.h:907:19: error: no member named
      'estimate_geodesic_distance' in
      'CGAL::Heat_method_3::internal::Surface_mesh_geodesic_distances_3<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double>
      > >, CGAL::Simple_cartesian<double>,
      CGAL::Eigen_solver_traits<Eigen::SimplicialLDLT<Eigen::SparseMatrix<double, 0, int>, 1,
      Eigen::AMDOrdering<int> > >, CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double> >
      >::Property_map<CGAL::SM_Vertex_index, CGAL::Point_3<CGAL::Simple_cartesian<double> > > >'
    return base().estimate_geodesic_distance(vd);
           ~~~~~~ ^
/work/stourneux/own/CGAL-5.0.2/examples/Heat_method_3/heat_method_surface_mesh.cpp:35:24: note: in
      instantiation of member function
      'CGAL::Heat_method_3::Surface_mesh_geodesic_distances_3<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Simple_cartesian<double>
      > >, CGAL::Heat_method_3::Direct, CGAL::Default, CGAL::Default,
      CGAL::Default>::estimate_geodesic_distance' requested here
  double distance = hm.estimate_geodesic_distance(source);


I have attached to this mail an example demonstrating the error (this is the example examples/Heat_method_3/heat_method_surface_mesh.cpp with minor modifications to use the one vertex distance computation method).


Am I missing something or is it a bug ?

Thank you,

-- 
Sebastien Tourneux
Buf Compagnie - R&D
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/Heat_method_3/Surface_mesh_geodesic_distances_3.h>
#include <fstream>
#include <iostream>


typedef CGAL::Simple_cartesian<double>                       Kernel;
typedef Kernel::Point_3                                      Point_3;
typedef CGAL::Surface_mesh<Point_3>                          Triangle_mesh;

typedef boost::graph_traits<Triangle_mesh>::vertex_descriptor vertex_descriptor;
typedef Triangle_mesh::Property_map<vertex_descriptor,double> Vertex_distance_map;
typedef CGAL::Heat_method_3::Surface_mesh_geodesic_distances_3<Triangle_mesh> Heat_method;



int main(int argc, char* argv[])
{
  Triangle_mesh tm;
  const char* filename = (argc > 1) ? argv[1] : "./data/sphere.off";
  std::ifstream input(filename);
  if (!input || !(input >> tm) || tm.is_empty()) {
    std::cerr << "Not a valid off file." << std::endl;
    return 1;
  }
  
  Heat_method hm(tm);

  //add the first vertex as the source set
  vertex_descriptor source = *(vertices(tm).first);
  hm.add_source(source);
  
  // compute the distance to the source itself, should be 0
  double distance = hm.estimate_geodesic_distance(source); 
  // compilation error : no member "estimate_geodesic_distance" found
  

  std::cout << "distance: " << distance << std::endl;

  std::cout << "done" << std::endl;
  return 0;
}



Archive powered by MHonArc 2.6.18.

Top of Page