A three dimensional line segment. More...
#include <ignition/math/Line3.hh>
Public Member Functions | |
Line3 ()=default | |
Line Constructor. | |
Line3 (const double _x1, const double _y1, const double _x2, const double _y2) | |
2D Constructor where Z coordinates are 0 | |
Line3 (const double _x1, const double _y1, const double _z1, const double _x2, const double _y2, const double _z2) | |
Constructor. | |
Line3 (const Line3< T > &_line) | |
Copy constructor. | |
Line3 (const math::Vector3< T > &_ptA, const math::Vector3< T > &_ptB) | |
Constructor. | |
bool | Coplanar (const Line3< T > &_line, const double _epsilon=1e-6) const |
Test if this line and the given line are coplanar. | |
math::Vector3< T > | Direction () const |
Get the direction of the line. | |
bool | Distance (const Line3< T > &_line, Line3< T > &_result, const double _epsilon=1e-6) const |
Get the shortest line between this line and the provided line. | |
bool | Intersect (const Line3< T > &_line, double _epsilon=1e-6) const |
Check if this line intersects the given line segment. | |
bool | Intersect (const Line3< T > &_line, math::Vector3< T > &_pt, double _epsilon=1e-6) const |
Check if this line intersects the given line segment. | |
T | Length () const |
Get the length of the line. | |
bool | operator!= (const Line3< T > &_line) const |
Inequality operator. | |
Line3 & | operator= (const Line3< T > &_line) |
Assignment operator. | |
bool | operator== (const Line3< T > &_line) const |
Equality operator. | |
math::Vector3< T > | operator[] (const size_t _index) const |
Get the start or end point. | |
bool | Parallel (const Line3< T > &_line, const double _epsilon=1e-6) const |
Test if this line and the given line are parallel. | |
void | Set (const double _x1, const double _y1, const double _x2, const double _y2, const double _z=0) |
Set the start and end point of the line segment, assuming that both points have the same height. | |
void | Set (const double _x1, const double _y1, const double _z1, const double _x2, const double _y2, const double _z2) |
Set the start and end point of the line segment. | |
void | Set (const math::Vector3< T > &_ptA, const math::Vector3< T > &_ptB) |
Set the start and end point of the line segment. | |
void | SetA (const math::Vector3< T > &_ptA) |
Set the start point of the line segment. | |
void | SetB (const math::Vector3< T > &_ptB) |
Set the end point of the line segment. | |
bool | Within (const math::Vector3< T > &_pt, double _epsilon=1e-6) const |
Check if the given point is between the start and end points of the line segment. | |
A three dimensional line segment.
The line is defined by a start and end point.
|
default |
Line Constructor.
|
inline |
Copy constructor.
[in] | _line | a line object |
|
inline |
Constructor.
[in] | _ptA | Start point of the line segment |
[in] | _ptB | End point of the line segment |
References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Set().
|
inline |
2D Constructor where Z coordinates are 0
[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 ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Set().
|
inline |
Constructor.
[in] | _x1 | X coordinate of the start point. |
[in] | _y1 | Y coordinate of the start point. |
[in] | _z1 | Z coordinate of the start point. |
[in] | _x2 | X coordinate of the end point. |
[in] | _y2 | Y coordinate of the end point. |
[in] | _z2 | Z coordinate of the end point. |
References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Set().
|
inline |
Test if this line and the given line are coplanar.
[in] | _line | Line to check against. |
[in] | _epsilon | The error bounds within which the check will return true. |
|
inline |
Get the direction of the line.
|
inline |
Get the shortest line between this line and the provided line.
In the case when the two lines are parallel, we choose the first point of this line and the closest point in the provided line.
[in] | _line | Line to compare against this. |
[out] | _result | The shortest line between _line and this. |
References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::clamp(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::Dot(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Set(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::SetA(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::SetB(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::X(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::Y(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::Z().
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Intersect().
|
inline |
Check if this line intersects the given line segment.
[in] | _line | The line to check for intersection. |
[in] | _epsilon | The error bounds within which the intersection check will return true. |
References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Intersect().
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Intersect(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Triangle3< T >::Intersects().
|
inline |
Check if this line intersects the given line segment.
The point of intersection is returned in the _pt parameter.
[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. |
References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Distance(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Length(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Parallel(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Within().
|
inline |
Get the length of the line.
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Intersect(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Triangle3< T >::Intersects().
|
inline |
Inequality operator.
[in] | _line | Line to compare for inequality. |
|
inline |
Assignment operator.
[in] | _line | a new value |
|
inline |
Equality operator.
[in] | _line | Line to compare for equality. |
|
inline |
Get the start or end point.
[in] | _index | 0 = start point, 1 = end point. The _index parameter 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.
|
inline |
Test if this line and the given line are parallel.
[in] | _line | Line to check against. |
[in] | _epsilon | The error bounds within which the check will return true. |
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Intersect().
|
inline |
Set the start and end point of the line segment, assuming that both points have the same height.
[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. |
[in] | _z | Z coordinate of both points, by default _z is set to 0. |
|
inline |
Set the start and end point of the line segment.
[in] | _x1 | X coordinate of the start point. |
[in] | _y1 | Y coordinate of the start point. |
[in] | _z1 | Z coordinate of the start point. |
[in] | _x2 | X coordinate of the end point. |
[in] | _y2 | Y coordinate of the end point. |
[in] | _z2 | Z coordinate of the end point. |
|
inline |
Set the start and end point of the line segment.
[in] | _ptA | Start point of the line segment |
[in] | _ptB | End point of the line segment |
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Line3(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Line3(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Line3(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Distance().
|
inline |
Set the start point of the line segment.
[in] | _ptA | Start point of the line segment |
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Distance().
|
inline |
Set the end point of the line segment.
[in] | _ptB | End point of the line segment |
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Distance().
|
inline |
Check if the given point is between the start and end points of the line segment.
[in] | _pt | Point to check. |
[in] | _epsilon | The error bounds within which the within check will return true. |
References ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::X(), ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::Y(), and ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Vector3< T >::Z().
Referenced by ignition::math::IGNITION_MATH_VERSION_NAMESPACE::Line3< T >::Intersect().