Represents a Euclidean 2D line. More...
#include <vgl_line_2d.h>
Public Member Functions | |
vgl_line_2d () | |
Default constructor (Line 1.y==0, the X axis). | |
vgl_line_2d (Type ta, Type tb, Type tc) | |
Construct a vgl_line_2d from its equation, three Types. | |
vgl_line_2d (const Type v[3]) | |
Construct from its equation, a 3-vector. | |
vgl_line_2d (vgl_homg_line_2d< Type > const &l) | |
Construct from homogeneous description of line. | |
vgl_line_2d (vgl_point_2d< Type > const &p1, vgl_point_2d< Type > const &p2) | |
Construct from two distinct points (join). | |
vgl_line_2d (vgl_point_2d< Type > const &p, vgl_vector_2d< Type > const &v) | |
Construct from one point and one vector. | |
bool | operator== (vgl_line_2d< Type > const &l) const |
the comparison operator. | |
bool | operator!= (vgl_line_2d< Type >const &other) const |
double | slope_radians () const |
angle with the horizontal line y=0, measured in radians. | |
double | slope_degrees () const |
angle with the horizontal line y=0, measured in 360-degrees. | |
Type | a () const |
Parameter a of line a*x + b*y + c = 0. | |
Type | b () const |
Parameter b of line a*x + b*y + c = 0. | |
Type | c () const |
Parameter c of line a*x + b*y + c = 0. | |
vgl_vector_2d< Type > | direction () const |
unit vector describing line direction. | |
vgl_vector_2d< Type > | normal () const |
unit vector orthogonal to line. | |
bool | normalize () |
normalize the line coefficients s.t. a^2 + b^2 = 1. | |
void | set (Type ta, Type tb, Type tc) |
Set a b c. | |
bool | ideal (Type=(Type) 0) const |
Return true iff this line is the line at infinity. | |
void | get_two_points (vgl_point_2d< Type > &p1, vgl_point_2d< Type > &p2) const |
Get two points on the line; normally the intersection with X and Y axes. | |
Private Attributes | |
Type | a_ |
Type | b_ |
Type | c_ |
Related Functions | |
(Note that these are not member functions.) | |
template<class T > | |
vgl_point_2d< T > | vgl_closest_point (vgl_line_2d< T > const &l, vgl_point_2d< T > const &p) |
Return the point on the given line closest to the given point. | |
template<class T > | |
double | vgl_distance_origin (vgl_line_2d< T > const &l) |
find the shortest distance of the line to the origin. | |
template<class T > | |
double | vgl_distance (vgl_line_2d< T > const &l, vgl_point_2d< T > const &p) |
return the perpendicular distance from a point to a line in 2D. | |
template<class T > | |
bool | vgl_intersection (vgl_box_2d< T > const &box, vgl_line_2d< T > const &line, vgl_point_2d< T > &p0, vgl_point_2d< T > &p1) |
Return true if line intersects box. If so, compute intersection points. | |
template<class T > | |
bool | vgl_intersection (vgl_line_2d< T > const &line0, vgl_line_2d< T > const &line1, vgl_point_2d< T > &intersection_point) |
Return the intersection point of two lines. Return false if lines are parallel. | |
template<class Type > | |
bool | is_ideal (l const &, Type=(Type) 0) |
Return true iff line is the line at infinity. | |
template<class Type > | |
bool | concurrent (l const &l1, l const &l2, l const &l3) |
Are three lines concurrent, i.e., do they pass through a common point?. | |
template<class Type > | |
vcl_ostream & | operator<< (vcl_ostream &s, l const &line) |
Write line description to stream: "<vgl_line_2d ax+by+c>". | |
template<class Type > | |
vcl_istream & | operator>> (vcl_istream &s, l &line) |
Read in three line parameters from stream. |
Represents a Euclidean 2D line.
An interface for the line coefficients, [a,b,c], is provided in terms of the standard implicit line equation: a*x + b*y + c = 0
Definition at line 34 of file vgl_line_2d.h.
vgl_line_2d< Type >::vgl_line_2d | ( | ) | [inline] |
Default constructor (Line 1.y==0, the X axis).
Definition at line 43 of file vgl_line_2d.h.
vgl_line_2d< Type >::vgl_line_2d | ( | Type | ta, |
Type | tb, | ||
Type | tc | ||
) | [inline] |
Construct a vgl_line_2d from its equation, three Types.
The values of a and b should not be both zero.
Definition at line 47 of file vgl_line_2d.h.
vgl_line_2d< Type >::vgl_line_2d | ( | const Type | v[3] | ) | [inline] |
Construct from its equation, a 3-vector.
The values v[0] and v[1] should not be both zero.
Definition at line 51 of file vgl_line_2d.h.
vgl_line_2d< Type >::vgl_line_2d | ( | vgl_homg_line_2d< Type > const & | l | ) |
Construct from homogeneous description of line.
The line l should not be the line at infinity.
Definition at line 34 of file vgl_line_2d.txx.
vgl_line_2d< Type >::vgl_line_2d | ( | vgl_point_2d< Type > const & | p1, |
vgl_point_2d< Type > const & | p2 | ||
) |
Construct from two distinct points (join).
line through two given points.
The two points must be distinct!
Definition at line 16 of file vgl_line_2d.txx.
vgl_line_2d< Type >::vgl_line_2d | ( | vgl_point_2d< Type > const & | p, |
vgl_vector_2d< Type > const & | v | ||
) |
Construct from one point and one vector.
line defined by one point and one vector.
Definition at line 26 of file vgl_line_2d.txx.
Type vgl_line_2d< Type >::a | ( | ) | const [inline] |
Parameter a of line a*x + b*y + c = 0.
Definition at line 97 of file vgl_line_2d.h.
Type vgl_line_2d< Type >::b | ( | ) | const [inline] |
Parameter b of line a*x + b*y + c = 0.
Definition at line 99 of file vgl_line_2d.h.
Type vgl_line_2d< Type >::c | ( | ) | const [inline] |
Parameter c of line a*x + b*y + c = 0.
Definition at line 101 of file vgl_line_2d.h.
vgl_vector_2d<Type> vgl_line_2d< Type >::direction | ( | ) | const [inline] |
unit vector describing line direction.
Definition at line 104 of file vgl_line_2d.h.
void vgl_line_2d< Type >::get_two_points | ( | vgl_point_2d< Type > & | p1, |
vgl_point_2d< Type > & | p2 | ||
) | const |
Get two points on the line; normally the intersection with X and Y axes.
Get two points on the line.
When the line is parallel to one of these, the point with y=1 or x=1, resp. are taken. When the line goes through the origin, the second point is (b, -a).
These two points are normally the intersections with the Y axis and X axis, respectively. When the line is parallel to one of these, the point with y=1 or x=1, resp. are taken. When the line goes through the origin, the second point is (b,-a).
Definition at line 47 of file vgl_line_2d.txx.
bool vgl_line_2d< Type >::ideal | ( | Type | = (Type)0 | ) | const [inline] |
Return true iff this line is the line at infinity.
This always returns "false"
Definition at line 121 of file vgl_line_2d.h.
vgl_vector_2d<Type> vgl_line_2d< Type >::normal | ( | ) | const [inline] |
unit vector orthogonal to line.
Definition at line 108 of file vgl_line_2d.h.
bool vgl_line_2d< Type >::normalize | ( | ) |
normalize the line coefficients s.t. a^2 + b^2 = 1.
Definition at line 76 of file vgl_line_2d.txx.
bool vgl_line_2d< Type >::operator!= | ( | vgl_line_2d< Type >const & | other | ) | const [inline] |
Definition at line 80 of file vgl_line_2d.h.
bool vgl_line_2d< Type >::operator== | ( | vgl_line_2d< Type > const & | l | ) | const [inline] |
the comparison operator.
Definition at line 74 of file vgl_line_2d.h.
void vgl_line_2d< Type >::set | ( | Type | ta, |
Type | tb, | ||
Type | tc | ||
) | [inline] |
Set a b c.
The values of a and b should not be both zero. Note that it does not make sense to set a, b or c separately
Definition at line 117 of file vgl_line_2d.h.
double vgl_line_2d< Type >::slope_degrees | ( | ) | const |
angle with the horizontal line y=0, measured in 360-degrees.
Returns values between -180 and 180, i.e., the lines x-y=0 and y-x=0 return different values (45 and -135 respectively) although these lines are identical.
Definition at line 57 of file vgl_line_2d.txx.
double vgl_line_2d< Type >::slope_radians | ( | ) | const |
angle with the horizontal line y=0, measured in radians.
Returns values between -pi and pi, i.e., the lines x-y=0 and y-x=0 return different values (pi/4 and -3pi/4 respectively) although these lines are identical.
Definition at line 70 of file vgl_line_2d.txx.
bool concurrent | ( | l const & | l1, |
l const & | l2, | ||
l const & | l3 | ||
) | [related] |
Are three lines concurrent, i.e., do they pass through a common point?.
Definition at line 140 of file vgl_line_2d.h.
bool is_ideal | ( | l const & | , |
Type | = (Type)0 |
||
) | [related] |
Return true iff line is the line at infinity.
Definition at line 135 of file vgl_line_2d.h.
vcl_ostream & operator<< | ( | vcl_ostream & | s, |
l const & | line | ||
) | [related] |
Write line description to stream: "<vgl_line_2d ax+by+c>".
vcl_istream & operator>> | ( | vcl_istream & | s, |
l & | line | ||
) | [related] |
Read in three line parameters from stream.
Either just reads three blank-separated numbers, or reads three comma-separated numbers, or reads three numbers in parenthesized form "(123, 321, -456)" or reads a formatted line equation "123x+321y-456=0"
vgl_point_2d< T > vgl_closest_point | ( | vgl_line_2d< T > const & | l, |
vgl_point_2d< T > const & | p | ||
) | [related] |
Return the point on the given line closest to the given point.
double vgl_distance | ( | vgl_line_2d< T > const & | l, |
vgl_point_2d< T > const & | p | ||
) | [related] |
return the perpendicular distance from a point to a line in 2D.
double vgl_distance_origin | ( | vgl_line_2d< T > const & | l | ) | [related] |
find the shortest distance of the line to the origin.
bool vgl_intersection | ( | vgl_box_2d< T > const & | box, |
vgl_line_2d< T > const & | line, | ||
vgl_point_2d< T > & | p0, | ||
vgl_point_2d< T > & | p1 | ||
) | [related] |
Return true if line intersects box. If so, compute intersection points.
bool vgl_intersection | ( | vgl_line_2d< T > const & | line0, |
vgl_line_2d< T > const & | line1, | ||
vgl_point_2d< T > & | intersection_point | ||
) | [related] |
Return the intersection point of two lines. Return false if lines are parallel.
Type vgl_line_2d< Type >::a_ [private] |
Definition at line 37 of file vgl_line_2d.h.
Type vgl_line_2d< Type >::b_ [private] |
Definition at line 38 of file vgl_line_2d.h.
Type vgl_line_2d< Type >::c_ [private] |
Definition at line 39 of file vgl_line_2d.h.