Gazebo Math

API Reference

7.5.1
Triangle< T > Class Template Reference

Triangle class and related functions. More...

#include <gz/math/Triangle.hh>

Public Member Functions

 Triangle ()=default
 Default constructor. More...
 
 Triangle (const math::Vector2< T > &_pt1, const math::Vector2< T > &_pt2, const math::Vector2< T > &_pt3)
 Constructor. More...
 
double Area () const
 Get the area of this triangle. More...
 
bool Contains (const Line2< T > &_line) const
 Check if this triangle completely contains the given line segment. More...
 
bool Contains (const math::Vector2< T > &_pt) const
 Get whether this triangle contains the given point. More...
 
bool Intersects (const Line2< T > &_line, math::Vector2< T > &_ipt1, math::Vector2< T > &_ipt2) const
 Get whether the given line intersects this triangle. More...
 
math::Vector2< T > operator[] (const size_t _index) const
 Get one of points that define the triangle. More...
 
Perimeter () const
 Get the length of the triangle's perimeter. More...
 
void Set (const math::Vector2< T > &_pt1, const math::Vector2< T > &_pt2, const math::Vector2< T > &_pt3)
 Set all vertices of the triangle. More...
 
void Set (const unsigned int _index, const math::Vector2< T > &_pt)
 Set one vertex of the triangle. More...
 
Line2< T > Side (const unsigned int _index) const
 Get a line segment for one side of the triangle. More...
 
bool Valid () const
 Get whether this triangle is valid, based on triangle inequality: the sum of the lengths of any two sides must be greater than the length of the remaining side. More...
 

Detailed Description

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

Triangle class and related functions.

Constructor & Destructor Documentation

◆ Triangle() [1/2]

Triangle ( )
default

Default constructor.

◆ Triangle() [2/2]

Triangle ( const math::Vector2< T > &  _pt1,
const math::Vector2< T > &  _pt2,
const math::Vector2< T > &  _pt3 
)
inline

Constructor.

Parameters
[in]_pt1First point that defines the triangle.
[in]_pt2Second point that defines the triangle.
[in]_pt3Third point that defines the triangle.

References Triangle< T >::Set().

Member Function Documentation

◆ Area()

double Area ( ) const
inline

Get the area of this triangle.

Returns
Triangle's area.

References Triangle< T >::Perimeter(), and Triangle< T >::Side().

◆ Contains() [1/2]

bool Contains ( const Line2< T > &  _line) const
inline

Check if this triangle completely contains the given line segment.

Parameters
[in]_lineLine to check.
Returns
True if the line's start and end points are both inside this triangle.

Referenced by Triangle< T >::Intersects().

◆ Contains() [2/2]

bool Contains ( const math::Vector2< T > &  _pt) const
inline

Get whether this triangle contains the given point.

Parameters
[in]_ptPoint to check.
Returns
True if the point is inside or on the triangle.

References Vector2< T >::Dot().

◆ Intersects()

bool Intersects ( const Line2< T > &  _line,
math::Vector2< T > &  _ipt1,
math::Vector2< T > &  _ipt2 
) const
inline

Get whether the given line intersects this triangle.

Parameters
[in]_lineLine to check.
[out]_ipt1Return value of the first intersection point, only valid if the return value of the function is true.
[out]_ipt2Return value of the second intersection point, only valid if the return value of the function is true.
Returns
True if the given line intersects this triangle.

References set< K >::begin(), Triangle< T >::Contains(), set< K >::empty(), set< K >::insert(), Line2< T >::Intersect(), and set< K >::size().

◆ operator[]()

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

Get one of points that define the triangle.

Parameters
[in]_indexThe index, where 0 == first vertex, 1 == second vertex, and 2 == third vertex. The index is clamped to the range [0, 2]
Returns
The point specified by _index.

References gz::math::clamp(), gz::math::GZ_TWO_SIZE_T, and gz::math::GZ_ZERO_SIZE_T.

◆ Perimeter()

T Perimeter ( ) const
inline

Get the length of the triangle's perimeter.

Returns
Sum of the triangle's line segments.

References Triangle< T >::Side().

Referenced by Triangle< T >::Area().

◆ Set() [1/2]

void Set ( const math::Vector2< T > &  _pt1,
const math::Vector2< T > &  _pt2,
const math::Vector2< T > &  _pt3 
)
inline

Set all vertices of the triangle.

Parameters
[in]_pt1First point that defines the triangle.
[in]_pt2Second point that defines the triangle.
[in]_pt3Third point that defines the triangle.

◆ Set() [2/2]

void Set ( const unsigned int&  _index,
const math::Vector2< T > &  _pt 
)
inline

Set one vertex of the triangle.

Parameters
[in]_indexIndex of the point to set, where 0 == first vertex, 1 == second vertex, and 2 == third vertex. The index is clamped to the range [0, 2].
[in]_ptValue of the point to set.

References gz::math::clamp().

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

◆ Side()

Line2<T> Side ( const unsigned int  _index) const
inline

Get a line segment for one side of the triangle.

Parameters
[in]_indexIndex of the side to retreive, where 0 == Line2(pt1, pt2), 1 == Line2(pt2, pt3), 2 == Line2(pt3, pt1) The index is clamped to the range [0, 2]
Returns
Line segment of the requested side.

Referenced by Triangle< T >::Area(), Triangle< T >::Perimeter(), and Triangle< T >::Valid().

◆ Valid()

bool Valid ( ) const
inline

Get whether this triangle is valid, based on triangle inequality: the sum of the lengths of any two sides must be greater than the length of the remaining side.

Returns
True if the triangle inequality holds

References Triangle< T >::Side().


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