Gazebo Math

API Reference

8.1.0
Line3< T > Class Template Reference

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

#include <gz/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 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.
 
Distance (const Vector3< T > &_pt)
 Calculate shortest distance between line and point.
 
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. The point of intersection is returned in the _pt parameter.
 
Length () const
 Get the length of the line.
 
bool operator!= (const Line3< T > &_line) const
 Inequality 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.
 

Detailed Description

template<typename T>
class gz::math::Line3< T >

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

Constructor & Destructor Documentation

◆ Line3() [1/4]

template<typename T >
Line3 ( )
default

Line Constructor.

◆ Line3() [2/4]

template<typename T >
Line3 ( const math::Vector3< T > &  _ptA,
const math::Vector3< T > &  _ptB 
)
inline

Constructor.

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

References Line3< T >::Set().

◆ Line3() [3/4]

template<typename T >
Line3 ( const double  _x1,
const double  _y1,
const double  _x2,
const double  _y2 
)
inline

2D Constructor where Z coordinates are 0

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 Line3< T >::Set().

◆ Line3() [4/4]

template<typename T >
Line3 ( const double  _x1,
const double  _y1,
const double  _z1,
const double  _x2,
const double  _y2,
const double  _z2 
)
inline

Constructor.

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

References Line3< T >::Set().

Member Function Documentation

◆ Coplanar()

template<typename T >
bool Coplanar ( const Line3< T > &  _line,
const double  _epsilon = 1e-6 
) const
inline

Test if this line and the given line are coplanar.

Parameters
[in]_lineLine to check against.
[in]_epsilonThe error bounds within which the check will return true.
Returns
True if the two lines are coplanar.

◆ Direction()

template<typename T >
math::Vector3< T > Direction ( ) const
inline

Get the direction of the line.

Returns
The direction vector

◆ Distance() [1/2]

template<typename T >
bool Distance ( const Line3< T > &  _line,
Line3< T > &  _result,
const double  _epsilon = 1e-6 
) const
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.

Parameters
[in]_lineLine to compare against this.
[out]_resultThe shortest line between _line and this.
[in]_epsilonError tolerance.
Returns
True if a solution was found. False if a solution is not possible.

References gz::math::clamp(), and Matrix6< T >::Set().

Referenced by Line3< T >::Intersect().

◆ Distance() [2/2]

template<typename T >
T Distance ( const Vector3< T > &  _pt)
inline

Calculate shortest distance between line and point.

Parameters
[in]_ptPoint which we are measuring distance to.
Returns
Distance from point to line.

◆ Intersect() [1/2]

template<typename T >
bool Intersect ( const Line3< 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 Line3< T >::Intersect().

Referenced by Line3< T >::Intersect().

◆ Intersect() [2/2]

template<typename T >
bool Intersect ( const Line3< T > &  _line,
math::Vector3< 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 _pt 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 Line3< T >::Distance(), Line3< T >::Parallel(), and Line3< T >::Within().

◆ Length()

template<typename T >
T Length ( ) const
inline

Get the length of the line.

Returns
The length of the line.

◆ operator!=()

template<typename T >
bool operator!= ( const Line3< 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 operator== ( const Line3< 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::Vector3< T > operator[] ( const size_t  _index) const
inline

Get the start or end point.

Parameters
[in]_index0 = start point, 1 = end point. The _index parameter 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()

template<typename T >
bool Parallel ( const Line3< T > &  _line,
const double  _epsilon = 1e-6 
) const
inline

Test if this line and the given line are parallel.

Parameters
[in]_lineLine to check against.
[in]_epsilonThe error bounds within which the check will return true.
Returns
True if the two lines are parallel.

Referenced by Line3< T >::Intersect().

◆ Set() [1/3]

template<typename T >
void Set ( const double  _x1,
const double  _y1,
const double  _x2,
const double  _y2,
const double  _z = 0 
)
inline

Set the start and end point of the line segment, assuming that both points have the same height.

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.
[in]_zZ coordinate of both points, by default _z is set to 0.

References Matrix6< T >::Set().

◆ Set() [2/3]

template<typename T >
void Set ( const double  _x1,
const double  _y1,
const double  _z1,
const double  _x2,
const double  _y2,
const double  _z2 
)
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]_z1Z coordinate of the start point.
[in]_x2X coordinate of the end point.
[in]_y2Y coordinate of the end point.
[in]_z2Z coordinate of the end point.

References Matrix6< T >::Set().

◆ Set() [3/3]

template<typename T >
void Set ( const math::Vector3< T > &  _ptA,
const math::Vector3< 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 Line3< T >::Line3(), Line3< T >::Line3(), and Line3< T >::Line3().

◆ SetA()

template<typename T >
void SetA ( const math::Vector3< T > &  _ptA)
inline

Set the start point of the line segment.

Parameters
[in]_ptAStart point of the line segment

◆ SetB()

template<typename T >
void SetB ( const math::Vector3< T > &  _ptB)
inline

Set the end point of the line segment.

Parameters
[in]_ptBEnd point of the line segment

◆ Within()

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

Check if the given point is between the start and end points of the line 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 std::max(), and std::min().

Referenced by Line3< T >::Intersect().


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