Subject: CGAL users discussion list
List archive
- From: Mael <>
- To:
- Subject: Re: [cgal-discuss] Surface_mesh_geodesic_distances_3 missing method ?
- Date: Fri, 24 Apr 2020 18:38:11 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=None ; spf=None
- Ironport-phdr: 9a23:T1R1ox/jL7SuAP9uRHKM819IXTAuvvDOBiVQ1KB+0+sTIJqq85mqBkHD//Il1AaPAdyGra8dwLuI+4nbGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1Ov71GonPhMiryuy+4ZLebxhIiTanYb5+MRq6oAHQu8ILnYZsN6E9xwfTrHBVYepW32RoJVySnxb4+Mi9+YNo/jpTtfw86cNOSL32cKskQ7NWCjQmKH0169bwtRbfVwuP52ATXXsQnxFVHgXK9hD6XpP2sivnqupw3TSRMMPqQbwoXzmp8qFmQwLqhigaLT406HzZhNJ+jKxboxyvqRJwzIHWb46JL/dxZL/RcMkASGZdUMtcVSpMCZ68YYsVCOoBOP5VoY7nqFQQqRu1GA6hBOb1xTBWgn/6x7c60+M8EQDJwgMgG8gCsHDOo9ruL6gdT/u4zKbWwjXEavNZxyv96JLIcxAvu/6DQa5wcc3LyUgvDQ/KklKQqYn8Mj6Ty+8DsHCb4vJ9We+tiGMrsQ98rza1ysojlIXFnJwZxkzL+Clhw4s4JMe0RFBnbdOqCpdcqT+WO5dsTs88TGxkpD42xqEctZKnZiQG1I4rywLZZveabYWI5g/jVP2NIThmnnJrZbO/hhes/kW41uHxUNS/3kxQoSpfiNbMs2gA1xzN5ciDTftw5kSs1SyK1wDU6+xIO0U0mrDaK54l27IwkYcTsVjZEi/xhkX2jLWadkM69ei08+jnY7PmqYGAN4Jslw3zMKcjltaxDOk2KAQDUHaX9f6i2LH/8kD1WLBKgec3kqndvpDaP8MbpquhDg9QyIks9RK/Ay280NQfgHkGI0xKeBadg4jtIV7BO+v3AumkjlSjjjhrwPXGMaP9ApXXLnnDnq3ucqph605b0goyzcpT6I5TCrEEOP7zQFP+tMTEDh8lNAy52/roCNpn2YMaQG6AH66ZMLjOvl+V/eIvOPKBZJQVuTb4M/gq/eTijX4/mV8HfKmmx4EbaH6iHvh+JkWZZmfjjckZHGcRuwo+UPTqhESFUT5Oe3a+R6I86S8/CIKhFYrDXoStj6aB3SilBJ1bZGNLB1GWHXfobYqIQfAMaDySIsN7lDwLS6ShR5cg1RGoqgD616JqIvbO9iEEr57vyMJ56/HLmREo6TN0F9id032KT2xsgmwISCU53KRmrUNgy1eDyrR3g+FDFdxI/P5JUwE6NYTdz+NgEdzyVBjBLZ+1TwOtTdyiRD0wVdks2MQmYkBnGtzkgAqQ8TCtBuownrGPTMgx+6/YmWL2OtZwzzDC3aMrgnEpT8xKOHG8l6B2/BTUHZ+PmEKcwfX5PZ8A1TLAoT/QhVGFu1tVBVYpAPf1GEsHb06TluzXo0bLTrugE7MiaFITxsOFL6ZWcMznhF5aQ+3yft/ZZjDpwjriNVOz3rqJKbHSVSAd0SHaUhRWw0YW+ijAMAE/AmKmvn6YCyJuU1TifxG0qLUsmDaAVkYxijqyQQh5zbPvo0waiPuZRu8Jz7wNszsmsSQyF1G4jYrb
Hello,
That's a bug. The function behind that interface appears in the doc because it used to exist during development of the package, but was not kept in the end.
The reason that this function didn't make the cut was probably that it was judged a bit deceiving because it makes it seem like you can get a faster version of heat method if you just call it on the vertices you care about. However, the algorithm is based on solving global (but sparse) matrices, and so you will not be faster by calling that old function compared to initializing your full VDM property map: the old code for was actually pretty much equal to:
double estimate_geodesic_distances(vertex v)
{
initialize_vdm;
return get(vdm, v);
}
I will fix it on the CGAL side, thank you for the report.
Best,
Mael
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
- [cgal-discuss] Surface_mesh_geodesic_distances_3 missing method ?, Sebastien Tourneux, 04/24/2020
- Re: [cgal-discuss] Surface_mesh_geodesic_distances_3 missing method ?, Mael, 04/24/2020
Archive powered by MHonArc 2.6.18.