CGAL 6.1 - 2D Straight Skeleton and Polygon Offsetting

Loading...
Searching...
No Matches
List of all members
StraightSkeletonBuilderTraits_2 Concept Reference
Reference Manual » Concepts

## Definition

Refines
  `DefaultConstructible`
  `CopyConstructible`

The concept `StraightSkeletonBuilderTraits_2` describes the requirements for the geometric traits class required by the algorithm class `CGAL::Straight_skeleton_builder_2`.

Has models
  `CGAL::Straight_skeleton_builder_traits_2<K>`

## Kernel Types
typedef unspecified_type | Kernel
| A model of the `Kernel` concept.
typedef unspecified_type | FT
| A model of the `FieldWithSqrt` concept provided by the kernel.
typedef unspecified_type | Point_2
| A model of the `Kernel::Point_2` concept.
typedef unspecified_type | Segment_2
| A model of the `Kernel::Segment_2` concept.
typedef unspecified_type | Vector_2
| A model of the `Kernel::Vector_2` concept.
typedef unspecified_type | Direction_2
| A model of the `Kernel::Direction_2` concept.
typedef CGAL::Trisegment_2< Kernel > | Trisegment_2
typedef CGAL::Trisegment_2_ptr< Trisegment_2 > | Trisegment_2_ptr

## Predicates and Constructors Types
typedef unspecified_type | Do_ss_event_exist_2
| A predicate object type.
typedef unspecified_type | Compare_ss_event_times_2
| A predicate object type.
typedef unspecified_type | Are_ss_events_simultaneous_2
| A predicate object type.
typedef unspecified_type | Construct_ss_event_time_and_point_2
| A construction object type.
typedef unspecified_type | Construct_ss_trisegment_2
| A construction object type.
typedef unspecified_type | Is_edge_facing_ss_node_2
| A predicate object type.
typedef unspecified_type | Oriented_side_of_event_point_wrt_bisector_2
| A predicate object type.

## Predicates and Constructors Functors
Are_ss_events_simultaneous_2 | are_ss_events_simultaneous_2_object () const
Compare_ss_event_times_2 | compare_ss_event_times_2_object () const
Do_ss_event_exist_2 | do_ss_event_exist_2_object () const
Is_edge_facing_ss_node_2 | is_edge_facing_ss_node_2_object () const
Oriented_side_of_event_point_wrt_bisector_2 | oriented_side_of_event_point_wrt_bisector_2_object () const
Construct_ss_event_time_and_point_2 | construct_ss_event_time_and_point_2_object () const
Construct_ss_trisegment_2 | construct_ss_trisegment_2_object () const

## Member Typedef Documentation

## ◆ Are_ss_events_simultaneous_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Are_ss_events_simultaneous_2

A predicate object type.

Must provide `bool operator()( const Trisegment_2_ptr& l, const Trisegment_2_ptr& r)`,

which determines if the events given by `l` and `r` are coincident in time and space; that is, both triples of offset lines intersect at the same point and at the same Euclidean distance from their sources.

Precondition
  `l` and `r` must be edge-triples corresponding to events that actually exist (as determined by the predicate `Do_ss_event_exist_2`).

## ◆ Compare_ss_event_times_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Compare_ss_event_times_2

A predicate object type.

Must provide

`CGAL::Comparison_result operator()(const Trisegment_2_ptr& l, const Trisegment_2_ptr& r) const`,

which compares the times for the events determined by the edge-triples `l` and `r`.

The time of an event given by an edge triple (which defines three oriented lines) is the Euclidean distance `t` at which the corresponding offset lines at `t` intersect in a single point.

Precondition
  `l` and `r` must be edge-triples corresponding to events that actually exist (as determined by the predicate `Do_ss_event_exist_2`).

## ◆ Construct_ss_event_time_and_point_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Construct_ss_event_time_and_point_2

A construction object type.

Must provide

`std::optional< std::tuple<FT, Point_2> > operator()( const Trisegment_2_ptr& e)`,

which returns the Euclidean distance `t >= 0` and the intersection point at which the corresponding three offset lines at `t` intersect if they do.

If the values cannot be computed, not even approximately (because of overflow for instance), an empty optional must be returned.

## ◆ Construct_ss_trisegment_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Construct_ss_trisegment_2

A construction object type.

Must provide `Trisegment_2_ptr operator()( const Segment_2& e0, const FT& w0, const Segment_2& e1, const FT& w1, const Segment_2& e2, const FT& w2 ) const`,

which returns an intrusive pointer to an object containing the three oriented lines defined by the three input edges.

## ◆ Do_ss_event_exist_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Do_ss_event_exist_2

A predicate object type.

Must provide

`bool operator()( const Trisegment_2_ptr& tri_segment, std::optional<FT> max_time ) const`,

which determines if, given the three oriented lines defined by the three input edges, there exists a Euclidean distance `t >= 0` and `t <= max_time` for which the corresponding three offset lines at `t` (parallel lines at a Euclidean distance of `t`) intersect in a single point.

Precondition
  Each edge in the triple must properly define an oriented line, that is, its points cannot be coincident.

## ◆ FT

typedef unspecified_type StraightSkeletonBuilderTraits_2::FT

A model of the `FieldWithSqrt` concept provided by the kernel.

This type is used to represent the event time stored in the skeleton nodes.

## ◆ Is_edge_facing_ss_node_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Is_edge_facing_ss_node_2

A predicate object type.

Must provide

`bool operator()( const Point_2& contour_node, const Segment_2& opposite_edge ) const`,

and

`bool operator()( const Trisegment_2_ptr& skeleton_node, const Segment_2& opposite_edge ) const`,

which return whether the point (either defined directly as a `Point_2` if it is a contour node, or indirectly by its edge triple if it is a skeleton node) lies in the halfplane to the left of the directed edge `opposite_edge`.

Precondition
  `skeleton_node` must be an edge-triple corresponding to an event that actually exists (as determined by the predicate `Do_ss_event_exist_2`).

## ◆ Oriented_side_of_event_point_wrt_bisector_2

typedef unspecified_type StraightSkeletonBuilderTraits_2::Oriented_side_of_event_point_wrt_bisector_2

A predicate object type.

Must provide

`CGAL::Oriented_side operator()( const Trisegment_2_ptr& e, const Segment_2& e0, const FT& w0, const Segment_2& e1, const FT& w1, const Trisegment_2_ptr& e01_event, bool e0_is_primary) const`,

which returns the oriented side of the event point described by the edge triple `e` w.r.t. the (positive) bisector `[e0,e1]`.

Precondition
  `skeleton_node` must be an edge-triple corresponding to an event that actually exists (as determined by the predicate `Do_ss_event_exist_2`).