CGAL 6.1 - Shape Regularization

Loading...
Searching...
No Matches
List of all members
CGAL::Shape_regularization::Contours::Multiple_directions_2< GeomTraits, InputRange, PointMap > Class Template Reference
Reference Manual » Contours

`#include <CGAL/Shape_regularization/Contours/Multiple_directions_2.h>`

## Definition

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

  GeomTraits | a model of `Kernel`
  InputRange | a model of `ConstRange` whose iterator type is `RandomAccessIterator`
  PointMap | a 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`

Examples
  Shape_regularization/regularize_closed_contour.cpp.

## Initialization
template<typename NamedParameters = parameters::Default_named_parameters>
| Multiple_directions_2 (const InputRange &input_range, const bool is_closed, const NamedParameters &np=parameters::default_values())
| initializes all internal data structures.

## 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 found principal direction.

## Miscellaneous
std::size_t | number_of_directions () const
| returns the number of principal directions of the contour.

## Constructor & Destructor Documentation

## ◆ 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>

CGAL::Shape_regularization::Contours::Multiple_directions_2< GeomTraits, InputRange, PointMap >::Multiple_directions_2 | ( | const InputRange & | input_range,
|  | const bool | is_closed,
|  | const NamedParameters & | np = `parameters::default_values()`
| ) |  |

initializes all internal data structures.

Template Parameters

  NamedParameters | a sequence of Named 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 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 acceptable length of a contour edge whose direction can be taken as a principal direction Type: `GeomTraits::FT` Default: 3 unit lengths |
  indicates whether the found directions should be better adjusted to the original shape or not Type: boolean Default: true |
  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

## 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::Multiple_directions_2< GeomTraits, InputRange, PointMap >::number_of_directions | ( |  | ) | const

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>>

void CGAL::Shape_regularization::Contours::Multiple_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 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