CGAL 5.4.5 - Shape Regularization
CGAL::Shape_regularization::Contours::User_defined_directions_2< GeomTraits, InputRange, PointMap > Class Template Reference

#include <CGAL/Shape_regularization/Contours/User_defined_directions_2.h>

Definition

template<typename GeomTraits, typename InputRange, typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
class CGAL::Shape_regularization::Contours::User_defined_directions_2< GeomTraits, InputRange, PointMap >

Sets multiple user-specified principal directions of the contour.

This algorithm finds the best-fit edges of the contour with respect to the user-specified principal directions and sets all other necessary data.

Template Parameters
GeomTraitsa model of Kernel
InputRangea model of ConstRange whose iterator type is RandomAccessIterator
PointMapa model of ReadablePropertyMap whose key type is the value type of the input range and value type is GeomTraits::Point_2. The default is CGAL::Identity_property_map<typename GeomTraits::Point_2>.
Is Model Of:
ContourDirections

Initialization

template<typename DirectionRange , typename NamedParameters >
 User_defined_directions_2 (const InputRange &input_range, const bool is_closed, const DirectionRange &direction_range, const NamedParameters &np)
 initializes all internal data structures. More...
 

Directions

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 user-specified principal direction. More...
 

Miscellaneous

std::size_t number_of_directions () const
 returns the number of principal directions of the contour. More...
 

Constructor & Destructor Documentation

◆ User_defined_directions_2()

template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
template<typename DirectionRange , typename NamedParameters >
CGAL::Shape_regularization::Contours::User_defined_directions_2< GeomTraits, InputRange, PointMap >::User_defined_directions_2 ( const InputRange &  input_range,
const bool  is_closed,
const DirectionRange &  direction_range,
const NamedParameters &  np 
)

initializes all internal data structures.

Template Parameters
DirectionRangea model of ConstRange whose value type is GeomTraits::Direction_2
NamedParametersa sequence of Named Parameters
Parameters
input_rangea const range of ordered 2D points, which form a contour
is_closedindicates whether the contour is closed or open
direction_rangea const range with user-specified principal directions
npan optional sequence of Named Parameters among the ones listed below; this parameter can be omitted, the default values are then used
Optional Named Parameters
  • an instance of PointMap that maps an item from input_range to GeomTraits::Point_2
  • Default: PointMap()
Precondition
direction_range.size() >= 1
direction_range.size() == input_range.size() for closed contours
direction_range.size() == input_range.size() - 1 for open contours
input_range.size() >= 3 for closed contours
input_range.size() >= 2 for open contours

Member Function Documentation

◆ number_of_directions()

template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
std::size_t CGAL::Shape_regularization::Contours::User_defined_directions_2< GeomTraits, InputRange, PointMap >::number_of_directions ( ) const

returns the number of principal directions of the contour.

The returned number equals to the number of the user-specified directions.

◆ orient()

template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>
void CGAL::Shape_regularization::Contours::User_defined_directions_2< GeomTraits, InputRange, PointMap >::orient ( const std::size_t  query_index,
Segment_2 segment 
) const

orients a given segment with the index query_index towards the best-fit user-specified principal direction.

Parameters
query_indexan index of the contour vertex that emits the contour edge being segment
segmenta 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