geolib2
Triangle.h
Go to the documentation of this file.
1 #ifndef GEOLIB_TRIANGLE_H_
2 #define GEOLIB_TRIANGLE_H_
3 
4 #include "datatypes.h"
5 
6 namespace geo {
7 
8 double triangleArea(const Vector3& p1, const Vector3& p2, const Vector3& p3);
9 
10 class Triangle {
11 
12 public:
13 
14  Triangle(const Vector3& p1_, const Vector3& p2_, const Vector3& p3_);
15 
16  virtual ~Triangle();
17 
18  inline geo::Vector3& p1() { return (*this)[0]; }
19 
20  inline const geo::Vector3& p1() const { return (*this)[0]; }
21 
22  inline geo::Vector3& p2() { return (*this)[1]; }
23 
24  inline const geo::Vector3& p2() const { return (*this)[1]; }
25 
26  inline geo::Vector3& p3() { return (*this)[2]; }
27 
28  inline const geo::Vector3& p3() const { return (*this)[2]; }
29 
30  inline geo::Vector3& operator[](const uint i) { return m[i]; }
31 
32  inline const geo::Vector3& operator[](const uint i) const { return m[i]; }
33 
34  double area() const;
35 
36  // serialize Triangle to stream
37  friend std::ostream& operator<< (std::ostream& out, const Triangle& t);
38 
40 
41 };
42 
43 }
44 
45 #endif
geo::Vector3
Vec3 Vector3
Definition: datatypes.h:32
geo::Triangle::p2
geo::Vector3 & p2()
Definition: Triangle.h:22
geo
Definition: Box.h:6
geo::Triangle::~Triangle
virtual ~Triangle()
Definition: Triangle.cpp:13
datatypes.h
geo::Triangle::p1
geo::Vector3 & p1()
Definition: Triangle.h:18
geo::Triangle::p3
const geo::Vector3 & p3() const
Definition: Triangle.h:28
geo::Triangle::m
std::array< geo::Vector3, 3 > m
Definition: Triangle.h:39
geo::triangleArea
double triangleArea(const Vector3 &p1, const Vector3 &p2, const Vector3 &p3)
Definition: Triangle.cpp:5
geo::Triangle::p1
const geo::Vector3 & p1() const
Definition: Triangle.h:20
std::ostream
geo::Triangle
Definition: Triangle.h:10
geo::Triangle::p2
const geo::Vector3 & p2() const
Definition: Triangle.h:24
geo::Triangle::p3
geo::Vector3 & p3()
Definition: Triangle.h:26
std::array< geo::Vector3, 3 >
geo::Vector3
Definition: matrix.h:12
geo::Triangle::operator<<
friend std::ostream & operator<<(std::ostream &out, const Triangle &t)
Definition: Triangle.cpp:20
geo::Triangle::operator[]
const geo::Vector3 & operator[](const uint i) const
Definition: Triangle.h:32
geo::Triangle::Triangle
Triangle(const Vector3 &p1_, const Vector3 &p2_, const Vector3 &p3_)
Definition: Triangle.cpp:10
geo::Triangle::area
double area() const
Definition: Triangle.cpp:16
geo::Triangle::operator[]
geo::Vector3 & operator[](const uint i)
Definition: Triangle.h:30