vgl_line_2d< Type > Class Template Reference

#include <vgl_line_2d.h>

List of all members.


Detailed Description

template<class Type>
class vgl_line_2d< Type >

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.


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

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.
double vgl_distance_origin (vgl_line_2d< T > const &l)
 find the shortest distance of the line to the origin.
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.
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.
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.

Constructor & Destructor Documentation

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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).

The two points must be distinct!

Definition at line 16 of file vgl_line_2d.txx.

template<class Type>
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.

Definition at line 26 of file vgl_line_2d.txx.


Member Function Documentation

template<class Type>
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.

template<class Type>
bool vgl_line_2d< Type >::operator!= ( vgl_line_2d< Type >const &  other  )  const [inline]

Definition at line 80 of file vgl_line_2d.h.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.

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.


Friends And Related Function Documentation

template<class Type>
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.

template<class Type>
double vgl_distance_origin ( vgl_line_2d< T > const &  l  )  [related]

find the shortest distance of the line to the origin.

template<class Type>
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.

template<class Type>
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.

template<class Type>
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.


Member Data Documentation

template<class Type>
Type vgl_line_2d< Type >::a_ [private]

Definition at line 37 of file vgl_line_2d.h.

template<class Type>
Type vgl_line_2d< Type >::b_ [private]

Definition at line 38 of file vgl_line_2d.h.

template<class Type>
Type vgl_line_2d< Type >::c_ [private]

Definition at line 39 of file vgl_line_2d.h.


The documentation for this class was generated from the following files:
Generated on Mon Mar 8 05:07:56 2010 for core/vgl by  doxygen 1.5.1