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.
1.7.5.1