Represents a homogeneous 2D line. More...
#include <vgl_homg_line_2d.h>
Public Member Functions | |
vgl_homg_line_2d () | |
Default constructor (Line 1.y==0, the X axis). | |
vgl_homg_line_2d (T va, T vb, T vc) | |
Construct from three Types. | |
vgl_homg_line_2d (const T v[3]) | |
Construct from 3-vector. | |
vgl_homg_line_2d (vgl_line_2d< T > const &p) | |
Construct from non-homogeneous line. | |
vgl_homg_line_2d (vgl_homg_point_2d< T > const &p1, vgl_homg_point_2d< T > const &p2) | |
Construct from two distinct points (join). | |
bool | operator== (vgl_homg_line_2d< T > const &l) const |
the comparison operator. | |
bool | operator!= (vgl_homg_line_2d< T > const &other) const |
T | a () const |
Parameter a of line a*x + b*y + c*w = 0. | |
T | b () const |
Parameter b of line a*x + b*y + c*w = 0. | |
T | c () const |
Parameter c of line a*x + b*y + c*w = 0. | |
vgl_vector_2d< double > | direction () const |
unit vector describing line direction, or (0,0) if line at infinity. | |
vgl_vector_2d< double > | normal () const |
unit vector orthogonal to line, or (0,0) if line at infinity. | |
void | normalize () |
divide all coefficients by sqrt(a^2 + b^2). | |
void | set (T va, T vb, T vc) |
Set a b c. | |
bool | ideal (T tol=(T) 0) const |
Return true iff this line is the line at infinity. | |
void | get_two_points (vgl_homg_point_2d< T > &p1, vgl_homg_point_2d< T > &p2) const |
get two points on the line. | |
Private Attributes | |
T | a_ |
the data associated with this line. | |
T | b_ |
T | c_ |
Related Functions | |
(Note that these are not member functions.) | |
template<class T > | |
vgl_homg_line_2d< T > | operator* (vnl_matrix_fixed< T, 3, 3 > const &m, vgl_homg_line_2d< T > const &p) |
Transform a line through a 3x3 projective transformation matrix. | |
template<class T > | |
vgl_homg_point_2d< T > | vgl_closest_point (vgl_homg_line_2d< T > const &l, vgl_homg_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_homg_line_2d< T > const &l) |
find the shortest distance of the line to the origin. | |
template<class T > | |
double | vgl_distance (vgl_homg_line_2d< T > const &l, vgl_homg_point_2d< T > const &p) |
return the perpendicular distance from a point to a line in 2D. | |
template<class T > | |
bool | is_ideal (l const &line, T tol=(T) 0) |
Return true iff line is the line at infinity. | |
template<class T > | |
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 T > | |
vcl_ostream & | operator<< (vcl_ostream &s, l const &line) |
Print line equation to stream. | |
template<class T > | |
vcl_istream & | operator>> (vcl_istream &s, l &line) |
Load in line parameters from stream. |
Represents a homogeneous 2D line.
Definition at line 26 of file vgl_homg_line_2d.h.
vgl_homg_line_2d< T >::vgl_homg_line_2d | ( | ) | [inline] |
Default constructor (Line 1.y==0, the X axis).
Definition at line 38 of file vgl_homg_line_2d.h.
vgl_homg_line_2d< T >::vgl_homg_line_2d | ( | T | va, |
T | vb, | ||
T | vc | ||
) | [inline] |
Construct from three Types.
The three given numbers should not be all 0
Definition at line 42 of file vgl_homg_line_2d.h.
vgl_homg_line_2d< T >::vgl_homg_line_2d | ( | const T | v[3] | ) | [inline] |
Construct from 3-vector.
The three given numbers should not be all 0
Definition at line 46 of file vgl_homg_line_2d.h.
vgl_homg_line_2d< T >::vgl_homg_line_2d | ( | vgl_line_2d< T > const & | p | ) |
Construct from non-homogeneous line.
vgl_homg_line_2d< T >::vgl_homg_line_2d | ( | vgl_homg_point_2d< T > const & | p1, |
vgl_homg_point_2d< T > const & | p2 | ||
) |
Construct from two distinct points (join).
The two points must be distinct!
T vgl_homg_line_2d< T >::a | ( | ) | const [inline] |
Parameter a of line a*x + b*y + c*w = 0.
Definition at line 80 of file vgl_homg_line_2d.h.
T vgl_homg_line_2d< T >::b | ( | ) | const [inline] |
Parameter b of line a*x + b*y + c*w = 0.
Definition at line 82 of file vgl_homg_line_2d.h.
T vgl_homg_line_2d< T >::c | ( | ) | const [inline] |
Parameter c of line a*x + b*y + c*w = 0.
Definition at line 84 of file vgl_homg_line_2d.h.
vgl_vector_2d<double> vgl_homg_line_2d< T >::direction | ( | ) | const [inline] |
unit vector describing line direction, or (0,0) if line at infinity.
Definition at line 87 of file vgl_homg_line_2d.h.
void vgl_homg_line_2d< T >::get_two_points | ( | vgl_homg_point_2d< T > & | p1, |
vgl_homg_point_2d< T > & | p2 | ||
) | const |
get two points on the line.
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, 1). Finally, when the line is the line at infinity, the returned points are (1,0,0) and (0,1,0). Thus, whenever possible, the returned points are not at infinity.
bool vgl_homg_line_2d< T >::ideal | ( | T | tol = (T)0 | ) | const [inline] |
Return true iff this line is the line at infinity.
This version checks (max(|a|,|b|) <= tol * |c|
Definition at line 102 of file vgl_homg_line_2d.h.
vgl_vector_2d<double> vgl_homg_line_2d< T >::normal | ( | ) | const [inline] |
unit vector orthogonal to line, or (0,0) if line at infinity.
Definition at line 90 of file vgl_homg_line_2d.h.
void vgl_homg_line_2d< Type >::normalize | ( | ) |
divide all coefficients by sqrt(a^2 + b^2).
Definition at line 76 of file vgl_homg_line_2d.txx.
bool vgl_homg_line_2d< T >::operator!= | ( | vgl_homg_line_2d< T > const & | other | ) | const [inline] |
Definition at line 75 of file vgl_homg_line_2d.h.
bool vgl_homg_line_2d< T >::operator== | ( | vgl_homg_line_2d< T > const & | l | ) | const [inline] |
the comparison operator.
Definition at line 69 of file vgl_homg_line_2d.h.
void vgl_homg_line_2d< T >::set | ( | T | va, |
T | vb, | ||
T | vc | ||
) | [inline] |
Set a b c.
The three given numbers should not be all 0 Note that it does not make sense to set a, b or c separately
Definition at line 98 of file vgl_homg_line_2d.h.
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 130 of file vgl_homg_line_2d.h.
bool is_ideal | ( | l const & | line, |
T | tol = (T)0 |
||
) | [related] |
Return true iff line is the line at infinity.
This version checks (max(|a|,|b|) <= tol * |c|
Definition at line 125 of file vgl_homg_line_2d.h.
vgl_homg_line_2d< T > operator* | ( | vnl_matrix_fixed< T, 3, 3 > const & | m, |
vgl_homg_line_2d< T > const & | p | ||
) | [related] |
Transform a line through a 3x3 projective transformation matrix.
Definition at line 906 of file vgl_homg_operators_2d.txx.
vcl_ostream & operator<< | ( | vcl_ostream & | s, |
l const & | line | ||
) | [related] |
Print line equation to stream.
vcl_istream & operator>> | ( | vcl_istream & | s, |
l & | line | ||
) | [related] |
Load in line parameters from stream.
vgl_homg_point_2d< T > vgl_closest_point | ( | vgl_homg_line_2d< T > const & | l, |
vgl_homg_point_2d< T > const & | p | ||
) | [related] |
Return the point on the given line closest to the given point.
double vgl_distance | ( | vgl_homg_line_2d< T > const & | l, |
vgl_homg_point_2d< T > const & | p | ||
) | [related] |
return the perpendicular distance from a point to a line in 2D.
double vgl_distance_origin | ( | vgl_homg_line_2d< T > const & | l | ) | [related] |
find the shortest distance of the line to the origin.
T vgl_homg_line_2d< T >::a_ [private] |
the data associated with this line.
Definition at line 29 of file vgl_homg_line_2d.h.
T vgl_homg_line_2d< T >::b_ [private] |
Definition at line 30 of file vgl_homg_line_2d.h.
T vgl_homg_line_2d< T >::c_ [private] |
Definition at line 31 of file vgl_homg_line_2d.h.