#include <CGAL/Shape_detection/Region_growing/Region_growing_on_point_set/Least_squares_circle_fit_region.h>
Region type based on the quality of the least squares circle fit applied to 2D points.
This class fits a circle to chunks of points in a 2D 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
-
- Is Model Of:
RegionType
|
|
typedef GeomTraits::FT | FT |
| | Number type.
|
| |
|
| | Least_squares_circle_fit_region (const InputRange &input_range, const FT distance_threshold=FT(1), const FT angle_threshold=FT(25), const std::size_t min_region_size=3, const FT minimum_radius=FT(0), const FT maximum_radius=std::numeric_limits< FT >::infinity(), const PointMap point_map=PointMap(), const NormalMap normal_map=NormalMap(), const GeomTraits traits=GeomTraits()) |
| | initializes all internal data structures. More...
|
| |
◆ Least_squares_circle_fit_region()
template<typename GeomTraits , typename InputRange , typename PointMap , typename NormalMap >
| CGAL::Shape_detection::Point_set::Least_squares_circle_fit_region< GeomTraits, InputRange, PointMap, NormalMap >::Least_squares_circle_fit_region |
( |
const InputRange & |
input_range, |
|
|
const FT |
distance_threshold = FT(1), |
|
|
const FT |
angle_threshold = FT(25), |
|
|
const std::size_t |
min_region_size = 3, |
|
|
const FT |
minimum_radius = FT(0), |
|
|
const FT |
maximum_radius = std::numeric_limits<FT>::infinity(), |
|
|
const PointMap |
point_map = PointMap(), |
|
|
const NormalMap |
normal_map = NormalMap(), |
|
|
const GeomTraits |
traits = GeomTraits() |
|
) |
| |
initializes all internal data structures.
- Parameters
-
| input_range | an instance of InputRange with 2D points and corresponding 2D normal vectors |
| distance_threshold | the maximum distance from a point to a circle. Default is 1. |
| angle_threshold | the maximum accepted angle in degrees between the normal of a point and the radius of a circle. Default is 25 degrees. |
| min_region_size | the minimum number of 2D points a region must have. Default is 3. |
| minimum_radius | the radius below which an estimated circle is considered as invalid and discarded. Default is 0 (no limit). |
| maximum_radius | the radius above which an estimated circle is considered as invalid and discarded. Default is infinity (no limit). |
| point_map | an instance of PointMap that maps an item from input_range to Kernel::Point_3 |
| normal_map | an instance of NormalMap that maps an item from input_range to Kernel::Vector_3 |
| traits | an instance of GeomTraits. |
- Precondition
input_range.size() > 0
-
distance_threshold >= 0
-
angle_threshold >= 0 && angle_threshold <= 90
-
min_region_size > 0
◆ is_part_of_region()
template<typename GeomTraits , typename InputRange , typename PointMap , typename NormalMap >
implements RegionType::is_part_of_region().
This function controls if a point with the index query_index is within the distance_threshold from the corresponding circle and if the angle between its normal and the circle radius is within the angle_threshold. If both conditions are satisfied, it returns true, otherwise false.
- Parameters
-
| query_index | index of the query point |
| indices | indices of the inliers of the region |
The first parameter is not used in this implementation.
- Returns
- Boolean
true or false
- Precondition
query_index >= 0 && query_index < input_range.size()
◆ is_valid_region()
template<typename GeomTraits , typename InputRange , typename PointMap , typename NormalMap >
implements RegionType::is_valid_region().
This function controls if the estimated radius is between minimum_radius and maximum_radius and if the region contains at least min_region_size points.
- Parameters
-
| region | indices of points included in the region |
- Returns
- Boolean
true or false
◆ update()
template<typename GeomTraits , typename InputRange , typename PointMap , typename NormalMap >
implements RegionType::update().
This function fits the least squares circle to all points from the region.
- Parameters
-
| region | indices of points included in the region |
- Precondition
region.size() > 0