CGAL 6.1.2 - 2D and 3D Linear Geometry Kernel: CGAL::Segment_2< Kernel > Class Template Reference

CGAL 6.1.2 - 2D and 3D Linear Geometry Kernel

Loading...
Searching...
No Matches
List of all members
CGAL::Segment_2< Kernel > Class Template Reference
Reference Manual » 2D Kernel Objects

`#include <CGAL/Segment_2.h>`

## Definition

template<typename Kernel>
class CGAL::Segment_2< Kernel >

An object `s` of the data type `Segment_2` is a directed straight line segment in the two-dimensional Euclidean plane \( \E^2\), i.e. a straight line segment \( [p,q]\) connecting two points \( p,q \in \mathbb{R}^2\).

The segment is topologically closed, i.e. the end points belong to it. Point `p` is called the source and `q` is called the target of `s`. The length of `s` is the Euclidean distance between `p` and `q`. Note that there is only a function to compute the square of the length, because otherwise we had to perform a square root operation which is not defined for all number types, which is expensive, and may not be exact.

Is model of
  `Kernel::Segment_2`
  `Hashable` if `Kernel` is a cartesian kernel and if `Kernel::FT` is `Hashable`

## Creation
| Segment_2 (const Point_2< Kernel > &p, const Point_2< Kernel > &q)
| introduces a segment `s` with source `p` and target `q`.

## Operations
bool | operator== (const Segment_2< Kernel > &q) const
| Test for equality: Two segments are equal, iff their sources and targets are equal.
bool | operator!= (const Segment_2< Kernel > &q) const
| Test for inequality.
Point_2< Kernel > | source () const
| returns the source of `s`.
Point_2< Kernel > | target () const
| returns the target of `s`.
Point_2< Kernel > | min () const
| returns the point of `s` with lexicographically smallest coordinate.
Point_2< Kernel > | max () const
| returns the point of `s` with lexicographically largest coordinate.
Point_2< Kernel > | vertex (int i) const
| returns source or target of `s`: `vertex(0)` returns the source of `s`, `vertex(1)` returns the target of `s`.
Point_2< Kernel > | point (int i) const
| returns `vertex(i)`.
Point_2< Kernel > | operator[] (int i) const
| returns `vertex(i)`.
Kernel::FT | squared_length () const
| returns the squared length of `s`.
Direction_2< Kernel > | direction () const
| returns the direction from source to target of `s`.
Vector_2< Kernel > | to_vector () const
| returns the vector `s.target()` - `s.source()`.
Segment_2< Kernel > | opposite () const
| returns a segment with source and target point interchanged.
Line_2< Kernel > | supporting_line () const
| returns the line `l` passing through `s`.

## Predicates
bool | is_degenerate () const
| segment `s` is degenerate, if source and target are equal.
bool | is_horizontal () const
bool | is_vertical () const
bool | has_on (const Point_2< Kernel > &p) const
| A point is on `s`, iff it is equal to the source or target of `s`, or if it is in the interior of `s`.
bool | collinear_has_on (const Point_2< Kernel > &p) const
| checks if point `p` is on segment `s`.

## Miscellaneous
Bbox_2 | bbox () const
| returns a bounding box containing `s`.
Segment_2< Kernel > | transform (const Aff_transformation_2< Kernel > &t) const
| returns the segment obtained by applying `t` on the source and the target of `s`.

## Constructor & Destructor Documentation

## ◆ Segment_2()

template<typename Kernel >

CGAL::Segment_2< Kernel >::Segment_2 | ( | const Point_2< Kernel > & | p,
|  | const Point_2< Kernel > & | q
| ) |  |

introduces a segment `s` with source `p` and target `q`.

The segment is directed from the source towards the target.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## Member Function Documentation

## ◆ bbox()

template<typename Kernel >

Bbox_2 CGAL::Segment_2< Kernel >::bbox | ( |  | ) | const

returns a bounding box containing `s`.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ collinear_has_on()

template<typename Kernel >

bool CGAL::Segment_2< Kernel >::collinear_has_on | ( | const Point_2< Kernel > & | p | ) | const

checks if point `p` is on segment `s`.

This function is faster than function `has_on()`.

Precondition
  `p` is on the supporting line of `s`.

## ◆ max()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::max | ( |  | ) | const

returns the point of `s` with lexicographically largest coordinate.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ min()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::min | ( |  | ) | const

returns the point of `s` with lexicographically smallest coordinate.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ operator[]()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::operator[] | ( | int | i | ) | const

returns `vertex(i)`.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ opposite()

template<typename Kernel >

Segment_2< Kernel > CGAL::Segment_2< Kernel >::opposite | ( |  | ) | const

returns a segment with source and target point interchanged.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ point()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::point | ( | int | i | ) | const

returns `vertex(i)`.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ source()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::source | ( |  | ) | const

returns the source of `s`.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ supporting_line()

template<typename Kernel >

Line_2< Kernel > CGAL::Segment_2< Kernel >::supporting_line | ( |  | ) | const

returns the line `l` passing through `s`.

Line `l` has the same orientation as segment `s`.

## ◆ target()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::target | ( |  | ) | const

returns the target of `s`.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.

## ◆ vertex()

template<typename Kernel >

Point_2< Kernel > CGAL::Segment_2< Kernel >::vertex | ( | int | i | ) | const

returns source or target of `s`: `vertex(0)` returns the source of `s`, `vertex(1)` returns the target of `s`.

The parameter `i` is taken modulo 2, which gives easy access to the other vertex.

Exactness
  This construction is trivial and therefore always exact in `Exact_predicates_inexact_constructions_kernel`.