| 1 | #ifndef _GEOMETRY_H_
|
|---|
| 2 | #define _GEOMETRY_H_
|
|---|
| 3 |
|
|---|
| 4 | #include "./include.h"
|
|---|
| 5 | #include "./BamgGeom.h"
|
|---|
| 6 | #include "./BamgOpts.h"
|
|---|
| 7 | #include "./GeomVertex.h"
|
|---|
| 8 | #include "./GeomEdge.h"
|
|---|
| 9 | #include "./Curve.h"
|
|---|
| 10 |
|
|---|
| 11 | namespace bamg {
|
|---|
| 12 |
|
|---|
| 13 | class Triangle;
|
|---|
| 14 | class BamgQuadtree;
|
|---|
| 15 | class GeomSubDomain;
|
|---|
| 16 | class Edge;
|
|---|
| 17 |
|
|---|
| 18 | class Geometry {
|
|---|
| 19 |
|
|---|
| 20 | public:
|
|---|
| 21 |
|
|---|
| 22 | long NbRef; // counter of ref on the this class if 0 we can delete
|
|---|
| 23 | long nbv; // number of vertices
|
|---|
| 24 | long nbe; // number of edges
|
|---|
| 25 | long nbsubdomains;
|
|---|
| 26 | long nbcurves;
|
|---|
| 27 | GeomVertex *vertices;
|
|---|
| 28 | GeomEdge *edges;
|
|---|
| 29 | BamgQuadtree *quadtree;
|
|---|
| 30 | GeomSubDomain *subdomains;
|
|---|
| 31 | Curve *curves;
|
|---|
| 32 | R2 pmin,pmax; // domain extrema coordinates
|
|---|
| 33 | double coefIcoor; // coef to integer Icoor1;
|
|---|
| 34 | double MaxCornerAngle;
|
|---|
| 35 |
|
|---|
| 36 | //Constructor/Destructors
|
|---|
| 37 | ~Geometry();
|
|---|
| 38 | Geometry();
|
|---|
| 39 | Geometry(const Geometry & Gh);
|
|---|
| 40 | Geometry(BamgGeom* bamggeom, BamgOpts* bamgopts);
|
|---|
| 41 |
|
|---|
| 42 | //Operators
|
|---|
| 43 | const GeomVertex &operator[](long i) const { return vertices[i]; };
|
|---|
| 44 | GeomVertex &operator[](long i) { return vertices[i]; };
|
|---|
| 45 | const GeomEdge &operator()(long i) const { return edges[i]; };
|
|---|
| 46 | GeomEdge &operator()(long i) { return edges[i]; };
|
|---|
| 47 |
|
|---|
| 48 | //Methods
|
|---|
| 49 | void Echo();
|
|---|
| 50 | I2 R2ToI2(const R2 &P) const;
|
|---|
| 51 | double MinimalHmin();
|
|---|
| 52 | double MaximalHmax();
|
|---|
| 53 | void ReadGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts);
|
|---|
| 54 | void Init(void);
|
|---|
| 55 | void PostRead();
|
|---|
| 56 | long GetId(const GeomVertex &t) const;
|
|---|
| 57 | long GetId(const GeomVertex *t) const;
|
|---|
| 58 | long GetId(const GeomEdge &t) const;
|
|---|
| 59 | long GetId(const GeomEdge *t) const;
|
|---|
| 60 | long GetId(const Curve *c) const;
|
|---|
| 61 | void UnMarkEdges();
|
|---|
| 62 | GeomEdge *ProjectOnCurve(const Edge &,double,BamgVertex &,VertexOnGeom &) const;
|
|---|
| 63 | GeomEdge *Containing(const R2 P, GeomEdge *start) const;
|
|---|
| 64 | void WriteGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts);
|
|---|
| 65 | };
|
|---|
| 66 |
|
|---|
| 67 | }
|
|---|
| 68 | #endif
|
|---|