A two dimensional line segment. The line is defined by a start and end point. More...
#include <gz/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::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... | |
bool | Collinear (const math::Vector2< T > &_pt, double _epsilon=1e-6) const |
Check if the given point is collinear with this line. 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... | |
T | 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... | |
Detailed Description
template<typename T>
class gz::math::Line2< T >
A two dimensional line segment. The line is defined by a start and end point.
Constructor & Destructor Documentation
◆ Line2() [1/2]
|
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]
|
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().
Member Function Documentation
◆ Collinear() [1/2]
|
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().
◆ Collinear() [2/2]
|
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 gz::math::equal().
Referenced by Line2< T >::OnSegment().
◆ CrossProduct() [1/2]
|
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]
|
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]
|
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]
|
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.
References Line2< T >::CrossProduct(), gz::math::equal(), std::max(), std::min(), Line2< T >::Within(), Vector2< T >::X(), and Vector2< T >::Y().
◆ Length()
|
inline |
Get the length of the line.
- Returns
- The length of the line.
◆ OnSegment()
|
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!=()
|
inline |
Inequality operator.
- Parameters
-
[in] _line Line to compare for inequality.
- Returns
- True if the given line is not to this line
◆ operator==()
|
inline |
Equality operator.
- Parameters
-
[in] _line Line to compare for equality.
- Returns
- True if the given line is equal to this line
◆ operator[]()
|
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]
References gz::math::clamp(), gz::math::GZ_ONE_SIZE_T, and gz::math::GZ_ZERO_SIZE_T.
◆ Parallel()
|
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 gz::math::equal().
Referenced by Line2< T >::Collinear().
◆ Set() [1/2]
|
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]
|
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()
|
inline |
Get the slope of the line.
- Returns
- The slope of the line, NAN_D if the line is vertical.
References gz::math::equal(), and gz::math::NAN_D.
◆ Within()
|
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().
The documentation for this class was generated from the following file: