This tutorial explains how to use the Triangle class from Ignition Math library.
Compile the code
Go to ign-math/examples and use cmake to compile the code:
git clone https://github.com/ignitionrobotics/ign-math/ -b ign-math6
cd ign-math/examples
mkdir build
cd build
cmake ..
make
When the code is compiled, run:
The ouput of the program:
Vertex 1: -1 0
Vertex 2: 0 1
Vertex 3: 1 0
Side 1: -1 0 0 1
Side 2: 0 1 1 0
Side 3: 1 0 -1 0
Perimeter=4.82843 Area=1
Triangle contains the point 0, 0.5
A line from (-2, 0.5) to (2, 0.5) intersects the triangle at the
following points:
     Pt1=-0.5 0.5
     Pt2=0.5 0.5
Code
Create a triangle with the following vertices:
 The individual vertices are accessible through the [] operator.
            << "Vertex 2: " << tri[1] << "\n"
            << "Vertex 3: " << tri[2] << "\n";
  Each side of the triangle is also accessible via the Side method. Each side consists of 2 vertices, the following code will print out the X and Y values of each vertex.
  std::cout << 
"Side 1: " << tri.Side(0) << 
"\n" 
            << "Side 2: " << tri.Side(1) << "\n"
            << "Side 3: " << tri.Side(2) << "\n";
 It's also possible to set each vertex individually or set all the vertices at once.
 You can get the perimeter length and area of the triangle
            << " Area=" << tri.Area() << "\n";
  The Contains function checks if a line or point is inside the triangle.
    std::cout << 
"Triangle contains the point 0, 0.5\n";
 
  else
    std::cout << 
"Triangle does not contain the point 0, 0.5\n";
 
  The Intersects function checks if a line segment intersects the triangle. It also returns the points of intersection.
  {
    std::cout << 
"A line from (-2, 0.5) to (2, 0.5) intersects " 
              << "the triangle at the\nfollowing points:\n"
              << "\t Pt1=" << pt1 << "\n"
              << "\t Pt2=" << pt2 << "\n";
  }
  else
  {
    std::cout << 
"A line from (-2, 0.5) to (2, 0.5) does not intersect " 
              << "the triangle\n";
  }
  There are more functions in Triangle. Take a look at the API