What are the member of Polylines

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

What are the member of Polylines

R Abilash
I want to know the members of the Polylines data structure.
Can some one guide me?



#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.

Reply | Threaded
Open this post in threaded view
|

Re: What are the member of Polylines

Laurent Rineau (CGAL/GeometryFactory)
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


Reply | Threaded
Open this post in threaded view
|

Re: What are the member of Polylines

stu002
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


Reply | Threaded
Open this post in threaded view
|

Re: What are the member of Polylines

Sebastien Loriot (GeometryFactory)
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