2 // Class : Gestion des tutaux en T (like castles in scotland)
4 #ifndef __CROSS_ELEMENTS_H
5 #define __CROSS_ELEMENTS_H
7 #include "HexElements.hxx"
11 enum {Cyl1=0, Cyl2=1, NbrSlices1=6, NbrSlices2=4, NbrVSlices1=NbrSlices1+1,
12 NbrVSlices2=NbrSlices2+1 };
14 class CrossElements : public Elements
17 virtual int countHexa () { return nbr_hexas ; }
18 virtual int countQuad () { return nbr_quads ; }
19 virtual int countEdge () { return nbr_edges ; }
20 virtual int countVertex () { return nbr_vertex ; }
23 CrossElements (Document* doc, EnumGrid type=GR_BICYL);
25 virtual ~CrossElements () {}
27 Hexa* getHexaIJK (int part, int nx, int ny, int nz);
28 Quad* getQuadIJ (int part, int nx, int ny, int nz);
29 Quad* getQuadJK (int part, int nx, int ny, int nz);
30 Quad* getQuadIK (int part, int nx, int ny, int nz);
31 Edge* getEdgeI (int part, int nx, int ny, int nz);
32 Edge* getEdgeJ (int part, int nx, int ny, int nz);
33 Edge* getEdgeK (int part, int nx, int ny, int nz);
34 Vertex* getVertexIJK (int part, int nx, int ny, int nz);
36 // Tutaux en T (like castles in scotland)
37 int crossCylinders (Cylinder* cyl1, Cylinder* cyl2, bool fill=true);
45 void fillGrid (int cyl, int deb=-1, int fin=-1);
46 void fillCenter (int cyl, int deb, int fin);
47 void createLittleCyl ();
49 void addLittleSlice (int i, int k, double x, double a, double b, double c);
50 void addBigSlice (int i, int k, double z, double a, double b, double c);
52 void copyVertex (int i1, int j1, int k1, int i2, int j2, int k2);
53 void copyEdge (int d1, int i, int j, int k, int d2, int i2, int j2, int k2);
54 void copyQuad (int d1, int i, int j, int k, int d2, int i2, int j2, int k2);
56 void setVertex (int cyl, int nx, int ny, int nz, double px, double py,
59 void setVertex (Vertex* vv, int cyl, int nx, int ny, int nz);
60 void setEdge (Edge* edge, int cyl, int dir, int nx, int ny, int nz);
61 void setQuad (Quad* quad, int cyl, int dir, int nx, int ny, int nz);
62 void setHexa (Hexa* cell, int cyl, int nx, int ny, int nz);
64 Edge* addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx,
66 Quad* addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, int dir,
67 int nx, int ny, int nz);
68 Hexa* addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf,
69 int cyl, int nx, int ny, int nz);
71 int indVertex (int cyl, int nx, int ny, int nz);
72 int indHexa (int cyl, int nx, int ny, int nz);
73 int indQuad (int cyl, int dir, int nx, int ny, int nz);
74 int indEdge (int cyl, int dir, int nx, int ny, int nz);
76 Hexa* findHexa1 (Quad* q1, Quad* q2);
77 Edge* findEdge1 (Vertex* v1, Vertex* v2);
78 Quad* findQuad1 (Edge* e1, Edge* e2);
85 double cross_gray1, cross_pray1, cross_igray1, cross_ipray1;
86 double cross_gray2, cross_pray2, cross_igray2, cross_ipray2;
87 double cross_he1, cross_hi1, cross_he2, cross_hi2;
89 int size_hiy, size_h1z, size_h2z, size_v1z, size_v2z;
90 int size_vz[2], size_hz[2];
91 int nbr_hexas1, nbr_quads1, nbr_edges1, nbr_vertex1;