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

Last change on this file since 13395 was 13395, checked in by Mathieu Morlighem, 12 years ago

merged trunk-jpl and trunk for revision 13393

File size: 2.5 KB
Line 
1#ifndef _TRIANGLE_H_
2#define _TRIANGLE_H_
3
4#include "./include.h"
5#include "AdjacentTriangle.h"
6
7namespace bamg {
8
9 //classes
10 class Mesh;
11 class BamgVertex;
12 class Triangle;
13
14 class Triangle {
15
16 friend class AdjacentTriangle;
17
18 private:
19 BamgVertex *vertices[3]; // 3 vertices if t is triangle, t[i] allowed by access function, (*t)[i] if pointer
20 Triangle *adj[3]; // 3 pointers toward the adjacent triangles
21 short AdjEdgeIndex[3]; // edge id in the adjacent triangles. The edge number 1 is the edge number AdjEdgeIndex[1] in the Adjacent triangle 1
22
23 public:
24 Icoor2 det; //Integer determinant (twice its area)
25 union {
26 Triangle *link;
27 long color;
28 };
29
30 //Constructors/Destructors
31 Triangle();
32 Triangle(Mesh *Th,long i,long j,long k);
33 Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2);
34
35 //Operators
36 const BamgVertex & operator[](int i) const {return *vertices[i];};
37 BamgVertex & operator[](int i) {return *vertices[i];};
38 const BamgVertex * operator()(int i) const {return vertices[i];};
39 BamgVertex * & operator()(int i) {return vertices[i];};
40
41 //Methods
42 void Echo();
43 double Anisotropy() const;
44 double Length() const;
45 int swap(short a1,int=0);
46 long Optim(short a,int =0);
47 int Locked(int a)const;
48 int Hidden(int a)const;
49 int GetAllflag(int a);
50 void SetAllFlag(int a,int f);
51 double QualityQuad(int a,int option=1) const;
52 short NuEdgeTriangleAdj(int i) const;
53 AdjacentTriangle FindBoundaryEdge(int i) const;
54 AdjacentTriangle Adj(int i) const;
55 Triangle *TriangleAdj(int i) const;
56 Triangle *Quadrangle(BamgVertex *& v0,BamgVertex *& v1,BamgVertex *& v2,BamgVertex *& v3) const;
57 void Renumbering(Triangle *tb,Triangle *te, long *renu);
58 void Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu);
59 void SetAdjAdj(short a);
60 void SetAdj2(short a,Triangle *t,short aat);
61 void SetSingleVertexToTriangleConnectivity();
62 void SetHidden(int a);
63 void SetLocked(int a);
64 void SetMarkUnSwap(int a);
65 void SetUnMarkUnSwap(int a);
66 void SetDet();
67
68 //Inline methods
69 double qualite() ;
70 void Set(const Triangle &,const Mesh &,Mesh &);
71 int In(BamgVertex *v) const { return vertices[0]==v || vertices[1]==v || vertices[2]==v ;}
72
73 };
74
75}
76#endif
Note: See TracBrowser for help on using the repository browser.