I got the following code from I want to know the members of the Polylines data structure.https://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2mesh_slicer_example_8cpp-example.html #include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Surface_mesh.h> #include <CGAL/AABB_halfedge_graph_segment_primitive.h> #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/Polygon_mesh_slicer.h> #include <fstream> typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Surface_mesh<K::Point_3> Mesh; typedef std::vector<K::Point_3> Polyline_type; typedef std::list< Polyline_type > Polylines; typedef CGAL::AABB_halfedge_graph_segment_primitive<Mesh> HGSP; typedef CGAL::AABB_traits<K, HGSP> AABB_traits; typedef CGAL::AABB_tree<AABB_traits> AABB_tree; int main(int argc, char* argv[]) { const char* filename = (argc > 1) ? argv[1] : "slider.off"; std::ifstream input(filename); Mesh mesh; if (!input || !(input >> mesh) || mesh.is_empty() || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Not a valid input file." << std::endl; return 1; } // Slicer constructor from the mesh CGAL::Polygon_mesh_slicer<Mesh, K> slicer(mesh); Polylines polylines; slicer(K::Plane_3(0, 0, 1, -0.4), std::back_inserter(polylines)); std::cout << "At z = 0.4, the slicer intersects " << polylines.size() << " polylines" << std::endl; polylines.clear(); slicer(K::Plane_3(0, 0, 1, 0.2), std::back_inserter(polylines)); std::cout << "At z = -0.2, the slicer intersects " << polylines.size() << " polylines" << std::endl; polylines.clear(); // Use the Slicer constructor from a pre-built AABB_tree AABB_tree tree(edges(mesh).first, edges(mesh).second, mesh); CGAL::Polygon_mesh_slicer<Mesh, K> slicer_aabb(mesh, tree); slicer_aabb(K::Plane_3(0, 0, 1, -0.4), std::back_inserter(polylines)); std::cout << "At z = 0.4, the slicer intersects " << polylines.size() << " polylines" << std::endl; polylines.clear(); return 0; } Thank you. |
Le Sunday, March 4, 2018 12:51:52 PM CET R Abilash a écrit :
> I got the following code from > https://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing > _2mesh_slicer_example_8cpp-example.html > > I want to know the members of the Polylines data structure. > Can some one guide me? You can see the types here in the code: typedef std::vector<K::Point_3> Polyline_type; typedef std::list< Polyline_type > Polylines; The API is the standard API of a `std::list` with its `value_type` being a `std::vector<K::Point_3>`. As for the API of `K::Point_3`, for all CGAL kernels the nested `Point_3` is the one documented here: https://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Point__3.html -- Laurent Rineau, PhD R&D Engineer at GeometryFactory http://www.geometryfactory.com/ Release Manager of the CGAL Project http://www.cgal.org/ -- You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to https://sympa.inria.fr/sympa/info/cgal-discuss |
On Mon, Mar 5, 2018 at 9:10 PM, Laurent Rineau (CGAL/GeometryFactory)
<[hidden email]> wrote: > Le Sunday, March 4, 2018 12:51:52 PM CET R Abilash a écrit : >> I got the following code from >> https://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing >> _2mesh_slicer_example_8cpp-example.html >> >> I want to know the members of the Polylines data structure. >> Can some one guide me? > > You can see the types here in the code: > > typedef std::vector<K::Point_3> Polyline_type; > typedef std::list< Polyline_type > Polylines; Does that mean there's no simple way to take the bounding box (AABB) of a polyline? Or apply an affine transform? Thanks, Stu -- You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to https://sympa.inria.fr/sympa/info/cgal-discuss |
Bbox_3 has a constructor from a range of objects (points included).
https://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Bbox__3.html For the affine transformation, you'll have to use a for-loop and apply the transformation to all the points. Adding an overload to transform that is taking a range of object is not difficult to do it you think that would make sense to have. Feel free to an issue on github: https://github.com/CGAL/cgal/issues Sebastien. On 03/05/2018 10:01 PM, Stuart Hungerford wrote: > On Mon, Mar 5, 2018 at 9:10 PM, Laurent Rineau (CGAL/GeometryFactory) > <[hidden email]> wrote: > >> Le Sunday, March 4, 2018 12:51:52 PM CET R Abilash a écrit : >>> I got the following code from >>> https://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing >>> _2mesh_slicer_example_8cpp-example.html >>> >>> I want to know the members of the Polylines data structure. >>> Can some one guide me? >> >> You can see the types here in the code: >> >> typedef std::vector<K::Point_3> Polyline_type; >> typedef std::list< Polyline_type > Polylines; > > Does that mean there's no simple way to take the bounding box (AABB) > of a polyline? Or apply an affine transform? > > > Thanks, > > Stu > -- You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to https://sympa.inria.fr/sympa/info/cgal-discuss |
Free forum by Nabble | Edit this page |