#include <CGAL/Shape_regularization/Contours/Multiple_directions_2.h>
template<typename GeomTraits, typename InputRange, typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
class CGAL::Shape_regularization::Contours::Multiple_directions_2< GeomTraits, InputRange, PointMap >
Estimates possibly multiple principal directions of the contour based on the user-specified minimum length and maximum angle bounds.
This algorithm finds the best-fit edges of the contour with respect to the user-specified parameters and sets their directions as the principal directions of the contour.
Template Parameters
Is Model Of: ContourDirections
Examples: Shape_regularization/regularize_closed_contour.cpp .
void orient (const std::size_t query_index, Segment_2 &segment) const
orients a given segment
with the index query_index
towards the best-fit found principal direction. More...
◆ Multiple_directions_2()
template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
template<typename NamedParameters = parameters::Default_named_parameters>
initializes all internal data structures.
Template Parameters
Parameters
input_range a const range of ordered 2D points, which form a contour
is_closed indicates whether the contour is closed or open
np an optional sequence of Named Parameters among the ones listed below; this parameter can be omitted, the default values are then used
Optional Named Parameters
maximum_angle
maximum allowed angle deviation in degrees between a contour edge and a principal direction such that they are considered to be parallel or orthogonal
Type: GeomTraits::FT
Default: 10 degrees
minimum_length
minimum acceptable length of a contour edge whose direction can be taken as a principal direction
Type: GeomTraits::FT
Default: 3 unit lengths
adjust_directions
indicates whether the found directions should be better adjusted to the original shape or not
Type: boolean
Default: true
point_map
an instance of PointMap
that maps an item from input_range
to GeomTraits::Point_2
Default: PointMap()
Precondition input_range.size() >= 3 for closed contours
input_range.size() >= 2 for open contours
◆ number_of_directions()
template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
returns the number of principal directions of the contour.
The returned number is always greater or equal than one.
◆ orient()
template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
orients a given segment
with the index query_index
towards the best-fit found principal direction.
Parameters
query_index an index of the contour vertex that emits the contour edge being segment
segment a segment to be rotated
Precondition query_index >= 0 && query_index < input_range.size() for closed contours
query_index >= 0 && query_index < input_range.size() - 1 for open contours