2 // C++ : La clase principale de Hexa
4 #include "HexDocument.hxx"
6 #include "HexEltBase.hxx"
7 #include "HexVertex.hxx"
10 #include "HexHexa.hxx"
12 #include "HexElements.hxx"
13 #include "HexCrossElements.hxx"
15 #include "HexVector.hxx"
16 #include "HexCylinder.hxx"
17 #include "HexPipe.hxx"
18 #include "HexMatrix.hxx"
19 #include "HexCloner.hxx"
20 #include "HexPropagation.hxx"
23 #include "HexXmlWriter.hxx"
24 #include "HexXmlTree.hxx"
25 #include "HexGlobale.hxx"
26 #include "HexGroups.hxx"
29 // ========================================================= performTranslation
30 int Document::performTranslation (Elements* elts, Vector* trans)
33 matrice.defTranslation (trans);
35 int ier = elts->transform (&matrice);
38 // ==================================================== performScale
39 int Document::performScale (Elements* elts, Vertex* ver, double k)
42 matrice.defScale (ver, k);
44 int ier = elts->transform (&matrice);
47 // ==================================================== performRotation
48 int Document::performRotation (Elements* elts, Vertex* ver, Vector* vec, double angle)
51 matrice.defRotation (ver, vec, angle);
53 int ier = elts->transform (&matrice);
56 // ==================================================== performSymmetryPoint
57 int Document::performSymmetryPoint (Elements* elts, Vertex* ver)
60 matrice.defSymmetryPoint (ver);
62 int ier = elts->transform (&matrice);
65 // ==================================================== performSymmetryPlane
66 int Document::performSymmetryPlane (Elements* elts, Vertex* ver, Vector* vec)
69 matrice.defSymmetryPlane (ver, vec);
71 int ier = elts->transform (&matrice);
74 // ==================================================== performSymmetryLine
75 int Document::performSymmetryLine (Elements* elts, Vertex* ver, Vector* vec)
78 matrice.defSymmetryLine (ver, vec);
80 int ier = elts->transform (&matrice);
83 // --------------------------------------------------------
84 // --------------------------------------------------------
85 // --------------------------------------------------------
86 // ========================================================= clonerElements
87 Elements* Document::clonerElements (Elements* table, Matrix* matrice)
89 Cloner copieur (matrice);
90 Elements* grille = copieur.clonerElements (table);
93 // --------------------------------------------------------
94 // --------------------------------------------------------
95 // --------------------------------------------------------
96 // ========================================================= makeTranslation
97 Elements* Document::makeTranslation (Elements* table, Vector* trans)
100 matrice.defTranslation (trans);
102 Elements* grille = clonerElements (table, &matrice);
105 // ========================================================= makeScale
106 Elements* Document::makeScale (Elements* table, Vertex* ver, double k)
109 matrice.defScale (ver, k);
111 Elements* grille = clonerElements (table, &matrice);
114 // ========================================================= makeRotation
115 Elements* Document::makeRotation (Elements* table, Vertex* ver, Vector* vec,
119 matrice.defRotation (ver, vec, angle);
121 Elements* grille = clonerElements (table, &matrice);
124 // ========================================================= makeSymmetryPoint
125 Elements* Document::makeSymmetryPoint (Elements* table, Vertex* ver)
128 matrice.defSymmetryPoint (ver);
130 Elements* grille = clonerElements (table, &matrice);
133 // ========================================================= makeSymmetryLine
134 Elements* Document::makeSymmetryLine (Elements* table, Vertex* ver, Vector* vec)
137 matrice.defSymmetryLine (ver, vec);
139 Elements* grille = clonerElements (table, &matrice);
142 // ========================================================= makeSymmetryPlane
143 Elements* Document::makeSymmetryPlane (Elements* table, Vertex* ver, Vector* vec)
146 matrice.defSymmetryPlane (ver, vec);
148 Elements* grille = clonerElements (table, &matrice);
151 // ----------------------------------------------------------------------
152 // ------------ Destroy
153 // ----------------------------------------------------------------------
154 // ========================================================= removeHexa
155 int Document::removeHexa (Hexa* cell)
163 // ========================================================= removeHexa
164 int Document::removeConnectedHexa (Hexa* cell)
170 cell->removeConnected ();
173 // ========================================================= dumpPropagation
174 void Document::dumpPropagation ()
176 int nb = countPropagation ();
178 for (int nro=0 ; nro<nb ; nro++)
180 Propagation* prop = getPropagation (nro);
181 const Edges& table = prop->getEdges ();
182 printf (" ____________________________________ Prop nro %d\n", nro);
183 for (int ned=0 ; ned<(int)table.size() ; ned++)
185 bool way = table [ned]->getWay ();
187 table [ned]->printName (" = ");
191 table [ned]->getVertex (0)->printName (", ");
192 table [ned]->getVertex (1)->printName (")\n");
197 table [ned]->getVertex (1)->printName (", ");
198 table [ned]->getVertex (0)->printName (")\n");