mirror of https://github.com/CGAL/cgal
WIP: user manual
This commit is contained in:
parent
d3cd7f4d6c
commit
42d5d45921
|
|
@ -6,11 +6,86 @@ namespace CGAL {
|
||||||
\cgalAutoToc
|
\cgalAutoToc
|
||||||
\author Simon Giraudot
|
\author Simon Giraudot
|
||||||
|
|
||||||
This chapter describes the ...
|
\section Point_set_3_Principle General Principle
|
||||||
|
|
||||||
\section Point_set_3_Definitions Definitions
|
There exists many sensors that generate 3D point sets: laser scanners,
|
||||||
|
LIDAR devices, cameras with photogrammetry post-processing... \cgal
|
||||||
|
provides several algorithms to process such point sets (see
|
||||||
|
\ref Chapter_Point_Set_Processing "Point Set Processing",
|
||||||
|
\ref Chapter_Point_Set_Shape_Detection "Shape Detection",
|
||||||
|
\ref Chapter_Advancing_Front_Surface_Reconstruction "Surface Reconstruction", etc.).
|
||||||
|
|
||||||
Section on definitions here ...
|
While these algorithms do not impose specific data structures to work
|
||||||
|
on, \cgal provides a 3D point set structure to make it easier for the
|
||||||
|
user to handle additional properties (such as normal vectors, colors,
|
||||||
|
labels...) and to call \cgal algorithms on them.
|
||||||
|
|
||||||
|
The point set data structure is based on a set of `std::vector`
|
||||||
|
objects that each stores one property. When created, a
|
||||||
|
`CGAL::Point_set_3<Gt>` object only contains 2 properties:
|
||||||
|
|
||||||
|
- The "point" property (with `CGAL::Point_3<Gt>` type)
|
||||||
|
|
||||||
|
- The "index" property (with `std::size_t` type) used to easily change
|
||||||
|
the order of the points without having to move all the properties.
|
||||||
|
|
||||||
|
Any property the user needs can be easily added, modified and
|
||||||
|
removed. A property is identified by a unique name and a
|
||||||
|
type. Convenience methods are provided to handle the property "normal"
|
||||||
|
of type `CGAL::Vector_3<Gt>` that is a very common property on point
|
||||||
|
sets.
|
||||||
|
|
||||||
|
To avoid frequent memory allocation and disallocation, removal of
|
||||||
|
points is handled by changing the "index" properties, putting the
|
||||||
|
points marked as removed at the back of the indices and keeping track
|
||||||
|
of the number of points marked as removed. It is then possible to
|
||||||
|
actually free the memory by collecting this garbage.
|
||||||
|
|
||||||
|
\section Point_set_3_Usage Simple Usage
|
||||||
|
|
||||||
|
The data structure is designed to be easy to use despite its potential
|
||||||
|
complexity when using properties. Several convenience methods are
|
||||||
|
provided to handle points and normals without having to handle
|
||||||
|
properties directly.
|
||||||
|
|
||||||
|
The following example shows how to fill a point set with points, add a
|
||||||
|
normal property, set the normal values, add or remove an item, etc.
|
||||||
|
|
||||||
|
\cgalExample{Point_set_3/point_set.cpp}
|
||||||
|
|
||||||
|
\section Point_set_3_Properties Using Additional Properties
|
||||||
|
|
||||||
|
Every information in the point set is a property. A raw point set
|
||||||
|
comes with "index" and "point" properties. As we saw in the previous
|
||||||
|
section, the user can easily add a "normal" property. But this
|
||||||
|
mechanism is generalized to any type of property.
|
||||||
|
|
||||||
|
The following example shows how to define a color property and an
|
||||||
|
intensity property, and how to modify the point set according to this.
|
||||||
|
|
||||||
|
\cgalExample{Point_set_3/point_set_property.cpp}
|
||||||
|
|
||||||
|
\section Point_set_3_Algorithms Applying CGAL Algorithms
|
||||||
|
|
||||||
|
Most \cgal algorithms let the user free to choose whatever data
|
||||||
|
structures he/she needs: the points and attributes are then access
|
||||||
|
through iterators and property maps. The `CGAL::Point_set_3<Gt>`
|
||||||
|
structure directly provides these iterators and property maps so that
|
||||||
|
applying \cgal algorithms to it is straightforward.
|
||||||
|
|
||||||
|
\subsection Point_set_3_PSP Point Set Processing
|
||||||
|
|
||||||
|
When adding a new property to the point set, the associated property
|
||||||
|
map is returned and can then be used as a standard property map. For
|
||||||
|
points and normals, the property maps can recovered using the methods
|
||||||
|
`point_pmap()` and `normal_pmap()`.
|
||||||
|
|
||||||
|
The following example shows how to apply some algorithms from the
|
||||||
|
\cgal library using a point set object:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\subsection Point_set_3_IO Input/Output
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue