CGAL 5.6.1 - Shape Detection
CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap > Class Template Reference

#include <CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_region.h>

Definition

Region type based on the quality of the least squares plane fit applied to 3D points.

This class fits a plane, using PCA, to chunks of points in a 3D point set and controls the quality of this fit. If all quality conditions are satisfied, the chunk is accepted as a valid region, otherwise rejected.

Template Parameters
GeomTraitsa model of Kernel
Item_a descriptor representing a given point. Must be a model of Hashable.
PointMapa model of ReadablePropertyMap whose key type is the value type of the input range and value type is Kernel::Point_3
NormalMapa model of ReadablePropertyMap whose key type is the value type of the input range and value type is Kernel::Vector_3
Is Model Of:
RegionType

Related Functions

(Note that these are not member functions.)

template<class PointSet3 >
using Least_squares_plane_fit_region_for_point_set = Least_squares_plane_fit_region< typename Kernel_traits< typename PointSet3::Point_3 >::Kernel, typename PointSet3::Index, typename PointSet3::Point_map, typename PointSet3::Vector_map >
 shortcut to ease the definition of the class when using CGAL::Point_set_3. More...
 
template<class PointSet3 , typename NamedParameters = CGAL::parameters::Default_named_parameters>
Least_squares_plane_fit_region_for_point_set< PointSet3 > make_least_squares_plane_fit_region (const PointSet3 &ps, const NamedParameters np=parameters::default_values())
 returns an instance of the sorting class to be used with CGAL::Point_set_3, with point and normal maps added to np.
 

Types

typedef GeomTraits::FT FT
 Number type.
 
using Item = Item_
 Item type.
 
using Region = std::vector< Item >
 
using Primitive = typename GeomTraits::Plane_3
 Primitive.
 
using Region_unordered_map = std::unordered_map< Item, std::size_t, internal::hash_item< Item > >
 Region map.
 
using Region_index_map = boost::associative_property_map< Region_unordered_map >
 

Initialization

template<typename NamedParameters = CGAL::parameters::Default_named_parameters>
 Least_squares_plane_fit_region (const NamedParameters &np=parameters::default_values())
 initializes all internal data structures. More...
 

Access

Region_index_map region_index_map ()
 implements RegionType::region_index_map(). More...
 
Primitive primitive () const
 implements RegionType::primitive(). More...
 
bool is_part_of_region (const Item query, const Region &) const
 implements RegionType::is_part_of_region(). More...
 
bool is_valid_region (const Region &region) const
 implements RegionType::is_valid_region(). More...
 
bool update (const Region &region)
 implements RegionType::update(). More...
 

Constructor & Destructor Documentation

◆ Least_squares_plane_fit_region()

template<typename GeomTraits , typename Item_ , typename PointMap , typename NormalMap >
template<typename NamedParameters = CGAL::parameters::Default_named_parameters>
CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap >::Least_squares_plane_fit_region ( const NamedParameters &  np = parameters::default_values())

initializes all internal data structures.

Template Parameters
NamedParametersa sequence of Named Parameters
Parameters
npa sequence of Named Parameters among the ones listed below
Optional Named Parameters
  • the maximum distance from a point to a plane
  • Type: GeomTraits::FT
  • Default: 1
  • the maximum angle in degrees between the normal of a point and the normal of a plane
  • Type: GeomTraits::FT
  • Default: 25 degrees
  • the cos value computed as cos(maximum_angle * PI / 180), this parameter can be used instead of the maximum_angle
  • Type: GeomTraits::FT
  • Default: cos(25 * PI / 180)
  • the minimum number of 3D points a region must have
  • Type: std::size_t
  • Default: 3
  • an instance of PointMap that maps an item to Kernel::Point_3
  • Default: PointMap()
  • an instance of NormalMap that maps an item to Kernel::Vector_3
  • Default: NormalMap()
  • an instance of GeomTraits
  • Default: GeomTraits()
Precondition
maximum_distance >= 0
maximum_angle >= 0 && maximum_angle <= 90
cosine_of_maximum_angle >= 0 && cosine_of_maximum_angle <= 1
minimum_region_size > 0

Member Function Documentation

◆ is_part_of_region()

template<typename GeomTraits , typename Item_ , typename PointMap , typename NormalMap >
bool CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap >::is_part_of_region ( const Item  query,
const Region &   
) const

implements RegionType::is_part_of_region().

This function controls if the point query is within the maximum_distance from the corresponding plane and if the angle between its normal and the plane's normal is within the maximum_angle. If both conditions are satisfied, it returns true, otherwise false.

Parameters
queryItem of the query point

The last parameter is not used in this implementation.

Returns
Boolean true or false

◆ is_valid_region()

template<typename GeomTraits , typename Item_ , typename PointMap , typename NormalMap >
bool CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap >::is_valid_region ( const Region &  region) const

implements RegionType::is_valid_region().

This function controls if the region contains at least minimum_region_size points.

Parameters
regionPoints of the region represented as Items.
Returns
Boolean true or false

◆ primitive()

template<typename GeomTraits , typename Item_ , typename PointMap , typename NormalMap >
Primitive CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap >::primitive ( ) const

implements RegionType::primitive().

This function provides the last primitive that has been fitted with the region.

Returns
Primitive parameters that fits the region
Precondition
successful fitted primitive via successful call of update(region) with a sufficient large region

◆ region_index_map()

template<typename GeomTraits , typename Item_ , typename PointMap , typename NormalMap >
Region_index_map CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap >::region_index_map ( )

implements RegionType::region_index_map().

This function creates an empty property map that maps iterators on the input range Item to std::size_t.

◆ update()

template<typename GeomTraits , typename Item_ , typename PointMap , typename NormalMap >
bool CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region< GeomTraits, Item_, PointMap, NormalMap >::update ( const Region &  region)

implements RegionType::update().

This function fits the least squares plane to all points from the region.

Parameters
regionPoints of the region represented as Items.
Returns
Boolean true if the plane fitting succeeded and false otherwise
Precondition
region.size() > 0