Loading...
Searching...
No Matches
ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T > Class Template Reference

A two dimensional line segment. More...

#include <ignition/math/Line2.hh>

Public Member Functions

 Line2 (const math::Vector2< T > &_ptA, const math::Vector2< T > &_ptB)
 Constructor.
 
 Line2 (double _x1, double _y1, double _x2, double _y2)
 Constructor.
 
bool Collinear (const math::Line2< T > &_line, double _epsilon=1e-6) const
 Check if the given line is collinear with this line.
 
bool Collinear (const math::Vector2< T > &_pt, double _epsilon=1e-6) const
 Check if the given point is collinear with this line.
 
double CrossProduct (const Line2< T > &_line) const
 Return the cross product of this line and the given line.
 
double CrossProduct (const Vector2< T > &_pt) const
 Return the cross product of this line and the given point.
 
bool Intersect (const Line2< T > &_line, double _epsilon=1e-6) const
 Check if this line intersects the given line segment.
 
bool Intersect (const Line2< T > &_line, math::Vector2< T > &_pt, double _epsilon=1e-6) const
 Check if this line intersects the given line segment.
 
Length () const
 Get the length of the line.
 
bool OnSegment (const math::Vector2< T > &_pt, double _epsilon=1e-6) const
 Return whether the given point is on this line segment.
 
bool operator!= (const Line2< T > &_line) const
 Inequality operator.
 
bool operator== (const Line2< T > &_line) const
 Equality operator.
 
math::Vector2< T > operator[] (size_t _index) const
 Get the start or end point.
 
bool Parallel (const math::Line2< T > &_line, double _epsilon=1e-6) const
 Check if the given line is parallel with this line.
 
void Set (const math::Vector2< T > &_ptA, const math::Vector2< T > &_ptB)
 Set the start and end point of the line segment.
 
void Set (double _x1, double _y1, double _x2, double _y2)
 Set the start and end point of the line segment.
 
double Slope () const
 Get the slope of the line.
 
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.
 

Detailed Description

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

A two dimensional line segment.

The line is defined by a start and end point.

Constructor & Destructor Documentation

◆ Line2() [1/2]

template<typename T >
ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Line2 ( const math::Vector2< T > & _ptA,
const math::Vector2< T > & _ptB )
inline

Constructor.

Parameters
[in]_ptAStart point of the line segment
[in]_ptBEnd point of the line segment

References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Set().

◆ Line2() [2/2]

template<typename T >
ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Line2 ( double _x1,
double _y1,
double _x2,
double _y2 )
inline

Constructor.

Parameters
[in]_x1X coordinate of the start point.
[in]_y1Y coordinate of the start point.
[in]_x2X coordinate of the end point.
[in]_y2Y coordinate of the end point.

References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Set().

Member Function Documentation

◆ Collinear() [1/2]

template<typename T >
bool ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::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]_lineThe line to check.
[in]_epsilonThe error bounds within which the collinear check will return true.
Returns
Return true if the line is collinear with this line, false otherwise.

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

◆ Collinear() [2/2]

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

Check if the given point is collinear with this line.

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

References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::CrossProduct().

Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::OnSegment().

◆ CrossProduct() [1/2]

template<typename T >
double ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::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]_lineLine for the cross product computation.
Returns
Return the cross product of this line and the given line.

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

◆ CrossProduct() [2/2]

template<typename T >
double ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::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]_ptPoint for the cross product computation.
Returns
Return the cross product of this line and the given point.

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

◆ Intersect() [1/2]

template<typename T >
bool ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Intersect ( const Line2< T > & _line,
double _epsilon = 1e-6 ) const
inline

Check if this line intersects the given line segment.

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

References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Intersect().

Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Collinear(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Intersect(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Triangle< T >::Intersects().

◆ Intersect() [2/2]

template<typename T >
bool ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::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]_lineThe line to check for intersection.
[out]_ptThe point of intersection. This value is only valid if the return value is true.
[in]_epsilonThe error bounds within which the intersection check will return true.
Returns
True if an intersection was found.

References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::CrossProduct(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Within(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector2< T >::X(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector2< T >::Y().

◆ Length()

template<typename T >
T ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Length ( ) const
inline

Get the length of the line.

Returns
The length of the line.

◆ OnSegment()

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

Return whether the given point is on this line segment.

Parameters
[in]_ptPoint to check.
[in]_epsilonThe error bounds within which the OnSegment check will return true.
Returns
True if the point is on the segement.

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

◆ operator!=()

template<typename T >
bool ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::operator!= ( const Line2< T > & _line) const
inline

Inequality operator.

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

◆ operator==()

template<typename T >
bool ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::operator== ( const Line2< T > & _line) const
inline

Equality operator.

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

◆ operator[]()

template<typename T >
math::Vector2< T > ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::operator[] ( size_t _index) const
inline

Get the start or end point.

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

References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::clamp(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::IGN_ONE_SIZE_T, and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::IGN_ZERO_SIZE_T.

◆ Parallel()

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

Check if the given line is parallel with this line.

Parameters
[in]_lineThe line to check.
[in]_epsilonThe 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 ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::CrossProduct().

Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Collinear().

◆ Set() [1/2]

template<typename T >
void ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Set ( const math::Vector2< T > & _ptA,
const math::Vector2< T > & _ptB )
inline

Set the start and end point of the line segment.

Parameters
[in]_ptAStart point of the line segment
[in]_ptBEnd point of the line segment

Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Line2(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Line2().

◆ Set() [2/2]

template<typename T >
void ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::Set ( double _x1,
double _y1,
double _x2,
double _y2 )
inline

Set the start and end point of the line segment.

Parameters
[in]_x1X coordinate of the start point.
[in]_y1Y coordinate of the start point.
[in]_x2X coordinate of the end point.
[in]_y2Y coordinate of the end point.

◆ Slope()

template<typename T >
double ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::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::IGNITION_MATH_VERSION_NAMESPACE::NAN_D.

◆ Within()

template<typename T >
bool ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line2< T >::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]_ptPoint to check.
[in]_epsilonThe error bounds within which the within check will return true.
Returns
True if the point is on the segement.

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

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


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