source: issm/trunk/src/c/bamg/Triangle.h@ 22758

Last change on this file since 22758 was 22758, checked in by Mathieu Morlighem, 7 years ago

merged trunk-jpl and trunk for revision 22757

File size: 2.3 KB
Line 
1#ifndef _TRIANGLE_H_
2#define _TRIANGLE_H_
3
4#include "./include.h"
5#include "AdjacentTriangle.h"
6
7namespace 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 {
25 Triangle *link;
26 long color;
27 };
28
29 //Constructors/Destructors
30 Triangle();
31 Triangle(Mesh *Th,long i,long j,long k);
32 Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2);
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);
55 void SetSingleVertexToTriangleConnectivity();
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
Note: See TracBrowser for help on using the repository browser.