# Ignition Math

## API Reference

6.9.3~pre2
Triangle< T > Class Template Reference

Triangle class and related functions. More...

#include <ignition/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 unsigned int _index, const math::Vector2< T > &_pt)
Set one vertex of the triangle. 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...

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 ignition::math::Triangle< T >

Triangle class and related functions.

## ◆ 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] _pt1 First point that defines the triangle. [in] _pt2 Second point that defines the triangle. [in] _pt3 Third point that defines the triangle.

References Triangle< T >::Set().

## ◆ 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] _line Line 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] _pt Point 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] _line Line to check. [out] _ipt1 Return value of the first intersection point, only valid if the return value of the function is true. [out] _ipt2 Return 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.

## ◆ operator[]()

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

Get one of points that define the triangle.

Parameters
 [in] _index The 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.

## ◆ 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 unsigned int _index, const math::Vector2< T > & _pt )
inline

Set one vertex of the triangle.

Parameters
 [in] _index Index 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] _pt Value of the point to set.

References ignition::math::clamp().

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

## ◆ Set() [2/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] _pt1 First point that defines the triangle. [in] _pt2 Second point that defines the triangle. [in] _pt3 Third point that defines the triangle.

## ◆ Side()

 Line2 Side ( const unsigned int _index ) const
inline

Get a line segment for one side of the triangle.

Parameters
 [in] _index Index 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: