Ice Sheet System Model  4.18
Code documentation
Triangle.h
Go to the documentation of this file.
1 #ifndef _TRIANGLE_H_
2 #define _TRIANGLE_H_
3 
4 #include "./include.h"
5 #include "AdjacentTriangle.h"
6 
7 namespace bamg {
8 
9  class Mesh;
10  class BamgVertex;
11  class Triangle;
12 
13  class Triangle {
14 
15  friend class AdjacentTriangle;
16 
17  private:
18  BamgVertex *vertices[3]; // 3 vertices if t is triangle, t[i] allowed by access function, (*t)[i] if pointer
19  Triangle *adj[3]; // 3 pointers toward the adjacent triangles
20  short AdjEdgeIndex[3]; // edge id in the adjacent triangles. The edge number 1 is the edge number AdjEdgeIndex[1] in the Adjacent triangle 1
21 
22  public:
23  long long det; //Integer determinant (twice its area)
24  union {
26  long color;
27  };
28 
29  //Constructors/Destructors
30  Triangle();
31  Triangle(Mesh *Th,long i,long j,long k);
33 
34  //Operators
35  const BamgVertex & operator[](int i) const {return *vertices[i];};
36  BamgVertex & operator[](int i) {return *vertices[i];};
37  const BamgVertex * operator()(int i) const {return vertices[i];};
38  BamgVertex * & operator()(int i) {return vertices[i];};
39 
40  //Methods
41  void Echo();
42  double Length() const;
43  int swap(short a1,int=0);
44  long Optim(short a,int =0);
45  int Locked(int a)const;
46  int Hidden(int a)const;
47  int GetAllflag(int a);
48  short NuEdgeTriangleAdj(int i) const;
49  AdjacentTriangle Adj(int i) const;
50  Triangle *TriangleAdj(int i) const;
51  void Renumbering(Triangle *tb,Triangle *te, long *renu);
52  void Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu);
53  void SetAdjAdj(short a);
54  void SetAdj2(short a,Triangle *t,short aat);
56  void SetHidden(int a);
57  void SetLocked(int a);
58  void SetMarkUnSwap(int a);
59  void SetUnMarkUnSwap(int a);
60 
61  //Inline methods
62  void Set(const Triangle &,const Mesh &,Mesh &);
63  int In(BamgVertex *v) const { return vertices[0]==v || vertices[1]==v || vertices[2]==v ;}
64  BamgVertex* GetVertex(int i){return vertices[i];}; // FIXME: this is used to avoid BamgVertex * operator()
65 
66  };
67 
68 }
69 #endif
bamg::BamgVertex
Definition: BamgVertex.h:15
bamg::Triangle::operator[]
BamgVertex & operator[](int i)
Definition: Triangle.h:36
bamg::Triangle::SetSingleVertexToTriangleConnectivity
void SetSingleVertexToTriangleConnectivity()
Definition: Triangle.cpp:213
bamg::Triangle::Hidden
int Hidden(int a) const
Definition: Triangle.cpp:105
bamg::Triangle::SetAdjAdj
void SetAdjAdj(short a)
Definition: Triangle.cpp:171
bamg::Triangle::GetAllflag
int GetAllflag(int a)
Definition: Triangle.cpp:102
bamg::Triangle::Optim
long Optim(short a, int=0)
Definition: Triangle.cpp:115
bamg::Triangle::operator[]
const BamgVertex & operator[](int i) const
Definition: Triangle.h:35
bamg
Definition: AdjacentTriangle.cpp:9
bamg::Triangle::SetUnMarkUnSwap
void SetUnMarkUnSwap(int a)
Definition: Triangle.cpp:218
bamg::Triangle
Definition: Triangle.h:13
bamg::Triangle::Locked
int Locked(int a) const
Definition: Triangle.cpp:108
bamg::Triangle::link
Triangle * link
Definition: Triangle.h:25
bamg::AdjacentTriangle
Definition: AdjacentTriangle.h:12
bamg::Triangle::Adj
AdjacentTriangle Adj(int i) const
Definition: Triangle.cpp:48
bamg::Triangle::swap
int swap(short a1, int=0)
Definition: Triangle.cpp:226
bamg::Triangle::vertices
BamgVertex * vertices[3]
Definition: Triangle.h:18
bamg::Triangle::SetLocked
void SetLocked(int a)
Definition: Triangle.cpp:202
bamg::Triangle::color
long color
Definition: Triangle.h:26
bamg::Triangle::NuEdgeTriangleAdj
short NuEdgeTriangleAdj(int i) const
Definition: Triangle.cpp:111
bamg::Triangle::Length
double Length() const
Definition: Triangle.cpp:51
bamg::Triangle::GetVertex
BamgVertex * GetVertex(int i)
Definition: Triangle.h:64
bamg::Triangle::adj
Triangle * adj[3]
Definition: Triangle.h:19
bamg::Mesh
Definition: Mesh.h:21
bamg::Triangle::det
long long det
Definition: Triangle.h:23
include.h
prototypes for include.h
bamg::Triangle::AdjEdgeIndex
short AdjEdgeIndex[3]
Definition: Triangle.h:20
bamg::Triangle::In
int In(BamgVertex *v) const
Definition: Triangle.h:63
bamg::Triangle::operator()
BamgVertex *& operator()(int i)
Definition: Triangle.h:38
bamg::Triangle::SetMarkUnSwap
void SetMarkUnSwap(int a)
Definition: Triangle.cpp:208
bamg::Triangle::TriangleAdj
Triangle * TriangleAdj(int i) const
Definition: Triangle.cpp:223
bamg::Triangle::Set
void Set(const Triangle &, const Mesh &, Mesh &)
Definition: Triangle.cpp:159
bamg::Triangle::Renumbering
void Renumbering(Triangle *tb, Triangle *te, long *renu)
Definition: Triangle.cpp:147
bamg::Triangle::operator()
const BamgVertex * operator()(int i) const
Definition: Triangle.h:37
bamg::Triangle::Triangle
Triangle()
Definition: Triangle.cpp:13
bamg::Triangle::Echo
void Echo()
Definition: Triangle.cpp:72
bamg::Triangle::SetAdj2
void SetAdj2(short a, Triangle *t, short aat)
Definition: Triangle.cpp:182
bamg::Triangle::SetHidden
void SetHidden(int a)
Definition: Triangle.cpp:194
AdjacentTriangle.h