CGAL 4.5 - 2D and 3D Linear Geometry Kernel
|
#include <CGAL/Line_2.h>
An object l
of the data type Line_2
is a directed straight line in the two-dimensional Euclidean plane \( \E^2\).
It is defined by the set of points with Cartesian coordinates \( (x,y)\) that satisfy the equation
\[ l:\; a\, x +b\, y +c = 0. \]
The line splits \( \E^2\) in a positive and a negative side. A point p
with Cartesian coordinates \( (px, py)\) is on the positive side of l
, iff \( a\, px + b\, py +c > 0\), it is on the negative side of l
, iff \( a\, px + b\, py +c < 0\). The positive side is to the left of l
.
Example
Let us first define two Cartesian two-dimensional points in the Euclidean plane \( \E^2\). Their dimension and the fact that they are Cartesian is expressed by the suffix _2
and the representation type Cartesian
.
To define a line l
we write:
Kernel::Line_2
Creation | |
Line_2 (const Kernel::RT &a, const Kernel::RT &b, const Kernel::RT &c) | |
introduces a line l with the line equation in Cartesian coordinates \( ax +by +c = 0\). | |
Line_2 (const Point_2< Kernel > &p, const Point_2< Kernel > &q) | |
introduces a line l passing through the points p and q . More... | |
Line_2 (const Point_2< Kernel > &p, const Direction_2< Kernel > &d) | |
introduces a line l passing through point p with direction d . | |
Line_2 (const Point_2< Kernel > &p, const Vector_2< Kernel > &v) | |
introduces a line l passing through point p and oriented by v . | |
Line_2 (const Segment_2< Kernel > &s) | |
introduces a line l supporting the segment s , oriented from source to target. | |
Line_2 (const Ray_2< Kernel > &r) | |
introduces a line l supporting the ray r , with same orientation. | |
Operations | |
bool | operator== (const Line_2< Kernel > &h) const |
Test for equality: two lines are equal, iff they have a non empty intersection and the same direction. | |
bool | operator!= (const Line_2< Kernel > &h) const |
Test for inequality. | |
Kernel::RT | a () const |
returns the first coefficient of l . | |
Kernel::RT | b () const |
returns the second coefficient of l . | |
Kernel::RT | c () const |
returns the third coefficient of l . | |
Point_2< Kernel > | point (int i) const |
returns an arbitrary point on l . More... | |
Point_2< Kernel > | projection (const Point_2< Kernel > &p) const |
returns the orthogonal projection of p onto l . | |
Kernel::FT | x_at_y (const Kernel::FT &y) const |
returns the \( x\)-coordinate of the point at l with given \( y\)-coordinate. More... | |
Kernel::FT | y_at_x (const Kernel::FT &x) const |
returns the \( y\)-coordinate of the point at l with given \( x\)-coordinate. More... | |
Predicates | |
bool | is_degenerate () const |
line l is degenerate, if the coefficients a and b of the line equation are zero. | |
bool | is_horizontal () const |
bool | is_vertical () const |
Oriented_side | oriented_side (const Point_2< Kernel > &p) const |
returns ON_ORIENTED_BOUNDARY, ON_NEGATIVE_SIDE, or the constant ON_POSITIVE_SIDE, depending on the position of p relative to the oriented line l . | |
Convenience Boolean Functions | |
bool | has_on (const Point_2< Kernel > &p) const |
bool | has_on_positive_side (const Point_2< Kernel > &p) const |
bool | has_on_negative_side (const Point_2< Kernel > &p) const |
Miscellaneous | |
Vector_2< Kernel > | to_vector () const |
returns a vector having the direction of l . | |
Direction_2< Kernel > | direction () const |
returns the direction of l . | |
Line_2< Kernel > | opposite () const |
returns the line with opposite direction. | |
Line_2< Kernel > | perpendicular (const Point_2< Kernel > &p) const |
returns the line perpendicular to l and passing through p , where the direction is the direction of l rotated counterclockwise by 90 degrees. | |
Line_2< Kernel > | transform (const Aff_transformation_2< Kernel > &t) const |
returns the line obtained by applying t on a point on l and the direction of l . | |
CGAL::Line_2< Kernel >::Line_2 | ( | const Point_2< Kernel > & | p, |
const Point_2< Kernel > & | q | ||
) |
introduces a line l
passing through the points p
and q
.
Line l
is directed from p
to q
.
Point_2<Kernel> CGAL::Line_2< Kernel >::point | ( | int | i) | const |
returns an arbitrary point on l
.
It holds point(i) == point(j)
, iff i==j
. Furthermore, l
is directed from point(i)
to point(j)
, for all i
\( <\) j
.
Kernel::FT CGAL::Line_2< Kernel >::x_at_y | ( | const Kernel::FT & | y) | const |
returns the \( x\)-coordinate of the point at l
with given \( y\)-coordinate.
l
is not horizontal. Kernel::FT CGAL::Line_2< Kernel >::y_at_x | ( | const Kernel::FT & | x) | const |
returns the \( y\)-coordinate of the point at l
with given \( x\)-coordinate.
l
is not vertical.