# Ignition Math

## API Reference

6.4.0
Line2< T > Class Template Reference

A two dimensional line segment. The line is defined by a start and end point. More...

#include <ignition/math/Line2.hh>

## Public Member Functions

Line2 (const math::Vector2< T > &_ptA, const math::Vector2< T > &_ptB)
Constructor. More...

Line2 (double _x1, double _y1, double _x2, double _y2)
Constructor. More...

bool Collinear (const math::Vector2< T > &_pt, double _epsilon=1e-6) const
Check if the given point is collinear with this line. More...

bool Collinear (const math::Line2< T > &_line, double _epsilon=1e-6) const
Check if the given line is collinear with this line. This is the AND of Parallel and Intersect. More...

double CrossProduct (const Line2< T > &_line) const
Return the cross product of this line and the given line. Give 'a' as this line and 'b' as given line, the equation is: (a.start.x - a.end.x) * (b.start.y - b.end.y) - (a.start.y - a.end.y) * (b.start.x - b.end.x) More...

double CrossProduct (const Vector2< T > &_pt) const
Return the cross product of this line and the given point. Given 'a' and 'b' as the start and end points, the equation is: More...

bool Intersect (const Line2< T > &_line, double _epsilon=1e-6) const
Check if this line intersects the given line segment. More...

bool Intersect (const Line2< T > &_line, math::Vector2< T > &_pt, double _epsilon=1e-6) const
Check if this line intersects the given line segment. The point of intersection is returned in the _result parameter. More...

Length () const
Get the length of the line. More...

bool OnSegment (const math::Vector2< T > &_pt, double _epsilon=1e-6) const
Return whether the given point is on this line segment. More...

bool operator!= (const Line2< T > &_line) const
Inequality operator. More...

bool operator== (const Line2< T > &_line) const
Equality operator. More...

math::Vector2< T > operator[] (size_t _index) const
Get the start or end point. More...

bool Parallel (const math::Line2< T > &_line, double _epsilon=1e-6) const
Check if the given line is parallel with this line. More...

void Set (const math::Vector2< T > &_ptA, const math::Vector2< T > &_ptB)
Set the start and end point of the line segment. More...

void Set (double _x1, double _y1, double _x2, double _y2)
Set the start and end point of the line segment. More...

double Slope () const
Get the slope of the line. More...

bool Within (const math::Vector2< T > &_pt, double _epsilon=1e-6) const
Check if the given point is between the start and end points of the line segment. This does not imply that the point is on the segment. More...

## Friends

std::ostreamoperator<< (std::ostream &_out, const Line2< T > &_line)
Stream extraction operator. More...

## Detailed Description

### template<typename T> class ignition::math::Line2< T >

A two dimensional line segment. The line is defined by a start and end point.

## ◆ Line2() [1/2]

 Line2 ( const math::Vector2< T > & _ptA, const math::Vector2< T > & _ptB )
inline

Constructor.

Parameters
 [in] _ptA Start point of the line segment [in] _ptB End point of the line segment

References Line2< T >::Set().

## ◆ Line2() [2/2]

 Line2 ( double _x1, double _y1, double _x2, double _y2 )
inline

Constructor.

Parameters
 [in] _x1 X coordinate of the start point. [in] _y1 Y coordinate of the start point. [in] _x2 X coordinate of the end point. [in] _y2 Y coordinate of the end point.

References Line2< T >::Set().

## ◆ Collinear() [1/2]

 bool Collinear ( const math::Vector2< T > & _pt, double _epsilon = 1e-6 ) const
inline

Check if the given point is collinear with this line.

Parameters
 [in] _pt The point to check. [in] _epsilon The error bounds within which the collinear check will return true.
Returns
Return true if the point is collinear with this line, false otherwise.

References Line2< T >::CrossProduct(), and ignition::math::equal().

Referenced by Line2< T >::OnSegment().

## ◆ Collinear() [2/2]

 bool Collinear ( const math::Line2< T > & _line, double _epsilon = 1e-6 ) const
inline

Check if the given line is collinear with this line. This is the AND of Parallel and Intersect.

Parameters
 [in] _line The line to check. [in] _epsilon The error bounds within which the collinear check will return true.
Returns
Return true if the line is collinear with this line, false otherwise.

References Line2< T >::Intersect(), and Line2< T >::Parallel().

## ◆ CrossProduct() [1/2]

 double CrossProduct ( const Line2< T > & _line ) const
inline

Return the cross product of this line and the given line. Give 'a' as this line and 'b' as given line, the equation is: (a.start.x - a.end.x) * (b.start.y - b.end.y) - (a.start.y - a.end.y) * (b.start.x - b.end.x)

Parameters
 [in] _line Line for the cross product computation.
Returns
Return the cross product of this line and the given line.

Referenced by Line2< T >::Collinear(), Line2< T >::Intersect(), and Line2< T >::Parallel().

## ◆ CrossProduct() [2/2]

 double CrossProduct ( const Vector2< T > & _pt ) const
inline

Return the cross product of this line and the given point. Given 'a' and 'b' as the start and end points, the equation is:

Parameters
 [in] _pt Point for the cross product computation.
Returns
Return the cross product of this line and the given point.

References Vector2< T >::X(), and Vector2< T >::Y().

## ◆ Intersect() [1/2]

 bool Intersect ( const Line2< T > & _line, double _epsilon = 1e-6 ) const
inline

Check if this line intersects the given line segment.

Parameters
 [in] _line The line to check for intersection. [in] _epsilon The error bounds within which the intersection check will return true.
Returns
True if an intersection was found.

Referenced by Line2< T >::Collinear(), and Triangle< T >::Intersects().

## ◆ Intersect() [2/2]

 bool Intersect ( const Line2< T > & _line, math::Vector2< T > & _pt, double _epsilon = 1e-6 ) const
inline

Check if this line intersects the given line segment. The point of intersection is returned in the _result parameter.

Parameters
 [in] _line The line to check for intersection. [out] _pt The point of intersection. This value is only valid if the return value is true. [in] _epsilon The error bounds within which the intersection check will return true.
Returns
True if an intersection was found.

## ◆ Length()

 T Length ( ) const
inline

Get the length of the line.

Returns
The length of the line.

## ◆ OnSegment()

 bool OnSegment ( const math::Vector2< T > & _pt, double _epsilon = 1e-6 ) const
inline

Return whether the given point is on this line segment.

Parameters
 [in] _pt Point to check. [in] _epsilon The error bounds within which the OnSegment check will return true.
Returns
True if the point is on the segement.

References Line2< T >::Collinear(), and Line2< T >::Within().

## ◆ operator!=()

 bool operator!= ( const Line2< T > & _line ) const
inline

Inequality operator.

Parameters
 [in] _line Line to compare for inequality.
Returns
True if the given line is not to this line

## ◆ operator==()

 bool operator== ( const Line2< T > & _line ) const
inline

Equality operator.

Parameters
 [in] _line Line to compare for equality.
Returns
True if the given line is equal to this line

## ◆ operator[]()

 math::Vector2 operator[] ( size_t _index ) const
inline

Get the start or end point.

Parameters
 [in] _index 0 = start point, 1 = end point. The _index is clamped to the range [0, 1]

## ◆ Parallel()

 bool Parallel ( const math::Line2< T > & _line, double _epsilon = 1e-6 ) const
inline

Check if the given line is parallel with this line.

Parameters
 [in] _line The line to check. [in] _epsilon The error bounds within which the parallel check will return true.
Returns
Return true if the line is parallel with this line, false otherwise. Return true if either line is a point (line with zero length).

References Line2< T >::CrossProduct(), and ignition::math::equal().

Referenced by Line2< T >::Collinear().

## ◆ Set() [1/2]

 void Set ( const math::Vector2< T > & _ptA, const math::Vector2< T > & _ptB )
inline

Set the start and end point of the line segment.

Parameters
 [in] _ptA Start point of the line segment [in] _ptB End point of the line segment

Referenced by Line2< T >::Line2().

## ◆ Set() [2/2]

 void Set ( double _x1, double _y1, double _x2, double _y2 )
inline

Set the start and end point of the line segment.

Parameters
 [in] _x1 X coordinate of the start point. [in] _y1 Y coordinate of the start point. [in] _x2 X coordinate of the end point. [in] _y2 Y coordinate of the end point.

## ◆ Slope()

 double Slope ( ) const
inline

Get the slope of the line.

Returns
The slope of the line, NAN_D if the line is vertical.

References ignition::math::equal(), and ignition::math::NAN_D.

## ◆ Within()

 bool Within ( const math::Vector2< T > & _pt, double _epsilon = 1e-6 ) const
inline

Check if the given point is between the start and end points of the line segment. This does not imply that the point is on the segment.

Parameters
 [in] _pt Point to check. [in] _epsilon The error bounds within which the within check will return true.
Returns
True if the point is on the segement.

References std::max(), std::min(), Vector2< T >::X(), and Vector2< T >::Y().

Referenced by Line2< T >::Intersect(), and Line2< T >::OnSegment().

## ◆ operator<<

 std::ostream& operator<< ( std::ostream & _out, const Line2< T > & _line )
friend

Stream extraction operator.

Parameters
 [in] _out output stream [in] _line Line2 to output
Returns
The stream

The documentation for this class was generated from the following file: