source: issm/trunk/src/c/objects/Bamg/Triangle.h@ 9370

Last change on this file since 9370 was 9370, checked in by Mathieu Morlighem, 14 years ago

extending new IoModel interface to other analyses in model processor

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