- // 1) marquage des hexas
- el_root->markAll (NO_USED);
- // 2) Memo noeuds
- vector <Quad*> q_amont;
- vector <Quad*> q_aval;
-
- int nbnodes = t_edges.size();
- vector <Vertex*> v_amont (nbnodes);
- vector <Vertex*> v_aval (nbnodes);
-
- std::map <Vertex*, Vertex*> vertex_aval;
-
- for (int nro=0; nro<nbnodes ; nro++)
- {
- Edge* arete = t_edges [nro];
- Vertex* amont = arete->getAmont ();
- v_amont [nro] = amont;
- vertex_aval [amont] = arete->getAval ();
- int nbcells = arete->getNbrParents ();
-
- for (int nq=0 ; nq<nbcells ; nq++)
- {
- Quad* quad = arete->getParent (nq);
- if (quad->getMark () != IS_USED)
- {
- quad->setMark (IS_USED);
- int nbcubes = quad->getNbrParents ();
- for (int nh=0 ; nh<nbcubes ; nh++)
- {
- Hexa* hexa = quad->getParent (nh);
- if (hexa->getMark () != IS_USED)
- {
- hexa->setMark (IS_USED);
- int namont = hexa->getBase (v_amont[nro], arete);
- int naval = glob->getOpposedQuad (namont);
- q_amont.push_back (hexa->getQuad (namont));
- q_aval .push_back (hexa->getQuad (naval ));
-
- if (db)
- {
- printf (" Quad = ");
- hexa->printName (", ");
- printf (" Faces = (");
- hexa->getQuad (namont)->printName (", ");
- hexa->getQuad (naval )->printName (")\n");
- }
- }
- }
- }
- }
- }
- // ------------------- Dimensionnement
- int hauteur = nbcuts + 1;
- int nbcells = q_amont.size ();
- nbr_hexas = nbcells * hauteur;
-
- tab_hexa.resize (nbr_hexas);
- tab_quad.clear (); // verticaux
- tab_edge.clear ();
- tab_pilier.clear ();
- tab_vertex.clear ();
+ if (revo_lution)
+ {
+ gen_matrix.defRotation (revo_center, revo_axe, gen_values[nh]);
+ cum_matrix.defRotation (revo_center, revo_axe, cum_values[nh]);
+ }
+ else
+ {
+ double hauteur = (nh+1)*prism_len;
+ double dh = prism_len;
+ if (prism_vec)
+ {
+ if (under_v6)
+ {
+ hauteur = gen_values[nh];
+ dh = nh>0 ? hauteur-gen_values[nh-1] : hauteur;
+ }
+ else
+ {
+ hauteur = cum_values[nh];
+ dh = gen_values[nh];
+ }
+ }
+ Real3 trans, decal;
+ for (int nc=dir_x ; nc<=dir_z ; nc++)
+ {
+ decal [nc] = prism_dir [nc]*dh;
+ trans [nc] = prism_dir [nc]*hauteur;
+ }