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

CGAL 6.2 - Shape Regularization

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

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

## Definition

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

Estimates the longest principal direction of the contour.

This algorithm finds the longest contour edge and sets its direction as the principal direction 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_open_contour.cpp.

## Initialization
template<typename NamedParameters = parameters::Default_named_parameters>
| Longest_direction_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 longest principal direction.

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

## Constructor & Destructor Documentation

## ◆ Longest_direction_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::Longest_direction_2< GeomTraits, InputRange, PointMap >::Longest_direction_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

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

returns the number of principal directions of the contour.

The returned number is always one.

## ◆ orient()

template<typename GeomTraits , typename InputRange , typename PointMap = CGAL::Identity_property_map<typename GeomTraits::Point_2>>

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