16#include <OMExceptions.H>
58 for (
unsigned i=0;i<3;++i)
59 vertices_[i] = pts[i];
80 return (&T.
vertex(0)==&vertex(0)) && (&T.
vertex(1)==&vertex(1)) && (&T.
vertex(2)==&vertex(2));
83 Vertex&
vertex(
const unsigned& vindex) {
return *vertices_[vindex]; }
84 const Vertex&
vertex(
const unsigned& vindex)
const {
return *vertices_[vindex]; }
87 const unsigned indx = vertex_index(V);
88 return Edge(vertex(indices[indx][0]),vertex(indices[indx][1]));
92 return {
Edge(vertex(1),vertex(2)),
Edge(vertex(2),vertex(0)),
Edge(vertex(0),vertex(1)) };
98 double area()
const {
return area_; }
99 double&
area() {
return area_; }
102 unsigned index()
const {
return ind; }
104 Vect3 center()
const {
return (vertex(0)+vertex(1)+vertex(2))/3; }
107 for (
unsigned i=0;i<3;++i)
123 unsigned vertex_index(
const Vertex& V)
const {
124 for (
unsigned i=0;i<3;++i)
127 throw UnknownVertex();
130 static constexpr unsigned indices[3][2] = {{1,2},{2,0},{0,1}};
132 Vertex* vertices_[3];
void change_orientation()
Change triangle orientation by flipping two of the vertices.
Edge edge(const Vertex &V) const
bool intersects(const Triangle &triangle) const
Check for intersection with another triangle.
const_iterator end() const
bool contains(const Vertex &p) const
Triangle(Vertex *pts[3], const unsigned index=-1)
Create a new triangle from a set of vertices.
const Vertex ** const_iterator
bool operator==(const Triangle &T) const
Operators.
Triangle(Vertex *p1, Vertex *p2, Vertex *p3, const unsigned index=-1)
Create a new triangle from a 3 vertex adresses.
Triangle(Vertex &p1, Vertex &p2, Vertex &p3, const unsigned index=-1)
Create a new triangle from a 3 vertices.
const Normal & normal() const
const Vertex & vertex(const unsigned &vindex) const
const_iterator begin() const
Iterators.
Vertex & vertex(const unsigned &vindex)
std::vector< Triangle > Triangles
std::vector< Triangle * > TrianglesRefs
std::vector< Edge > Edges
std::map< unsigned, unsigned > IndexMap
TriangleIndices(const unsigned ind[3])
TriangleIndices & operator=(const TriangleIndices &)=default
const unsigned & operator[](const unsigned i) const
TriangleIndices(const unsigned i, const unsigned j, const unsigned k)
unsigned & operator[](const unsigned i)
TriangleIndices(const TriangleIndices &ind)