97 const Domaine_t& domaine=this->mon_dom.valeur();
99 double prod1,prod2,xn,yn,zn;
100 int_t som0, som1, som2, som3,som4,som5;
104 som0 = domaine.sommet_elem(ielem,0);
105 som1 = domaine.sommet_elem(ielem,1);
106 som2 = domaine.sommet_elem(ielem,2);
107 som3 = domaine.sommet_elem(ielem,3);
108 som4 = domaine.sommet_elem(ielem,4);
109 som5 = domaine.sommet_elem(ielem,5);
110 if( ( est_egal(dom.
coord(som0,0),pos[0]) && est_egal(dom.
coord(som0,1),pos[1]) && est_egal(dom.
coord(som0,2),pos[2]) )
111 || (est_egal(dom.
coord(som1,0),pos[0]) && est_egal(dom.
coord(som1,1),pos[1]) && est_egal(dom.
coord(som1,2),pos[2]))
112 || (est_egal(dom.
coord(som2,0),pos[0]) && est_egal(dom.
coord(som2,1),pos[1]) && est_egal(dom.
coord(som2,2),pos[2]))
113 || (est_egal(dom.
coord(som3,0),pos[0]) && est_egal(dom.
coord(som3,1),pos[1]) && est_egal(dom.
coord(som3,2),pos[2]))
114 || (est_egal(dom.
coord(som4,0),pos[0]) && est_egal(dom.
coord(som4,1),pos[1]) && est_egal(dom.
coord(som4,2),pos[2]))
115 || (est_egal(dom.
coord(som5,0),pos[0]) && est_egal(dom.
coord(som5,1),pos[1]) && est_egal(dom.
coord(som5,2),pos[2]))
119 for (
int j=0; j<5; j++)
124 som0 = domaine.sommet_elem(ielem,0);
125 som1 = domaine.sommet_elem(ielem,1);
126 som2 = domaine.sommet_elem(ielem,3);
127 som3 = domaine.sommet_elem(ielem,2);
130 som0 = domaine.sommet_elem(ielem,0);
131 som1 = domaine.sommet_elem(ielem,2);
132 som2 = domaine.sommet_elem(ielem,3);
133 som3 = domaine.sommet_elem(ielem,4);
136 som0 = domaine.sommet_elem(ielem,1);
137 som1 = domaine.sommet_elem(ielem,2);
138 som2 = domaine.sommet_elem(ielem,4);
139 som3 = domaine.sommet_elem(ielem,0);
142 som0 = domaine.sommet_elem(ielem,0);
143 som1 = domaine.sommet_elem(ielem,1);
144 som2 = domaine.sommet_elem(ielem,2);
145 som3 = domaine.sommet_elem(ielem,3);
148 som0 = domaine.sommet_elem(ielem,3);
149 som1 = domaine.sommet_elem(ielem,4);
150 som2 = domaine.sommet_elem(ielem,5);
151 som3 = domaine.sommet_elem(ielem,0);
164 prod1 = xn * ( dom.
coord(som3,0) - dom.
coord(som0,0) )
165 + yn * ( dom.
coord(som3,1) - dom.
coord(som0,1) )
166 + zn * ( dom.
coord(som3,2) - dom.
coord(som0,2) );
167 prod2 = xn * ( pos[0] - dom.
coord(som0,0) )
168 + yn * ( pos[1] - dom.
coord(som0,1) )
169 + zn * ( pos[2] - dom.
coord(som0,2) );
202 const Domaine_t& domaine=this->mon_dom.valeur();
203 const IntTab_t& elem=domaine.les_elems();
205 int_t size_tot = domaine.nb_elem_tot();
207 for (
int_t num_poly=0; num_poly<size_tot; num_poly++)
209 int_t i1=elem(num_poly,0),
217 double a1 = (coord(i2,0)-coord(i3,0))/2.0, a2 = (coord(i2,1)-coord(i3,1))/2.0, a3 = (coord(i2,2)-coord(i3,2))/2.0;
218 double b1 = (coord(i5,0)-coord(i6,0))/2.0, b2 = (coord(i5,1)-coord(i6,1))/2.0, b3 = (coord(i5,2)-coord(i6,2))/2.0;
219 double c1 = (coord(i4,0)-coord(i1,0))/2.0, c2 = (coord(i4,1)-coord(i1,1))/2.0, c3 = (coord(i4,2)-coord(i1,2))/2.0;
220 double d1 = (coord(i5,0)-coord(i2,0))/2.0, d2 = (coord(i5,1)-coord(i2,1))/2.0, d3 = (coord(i5,2)-coord(i2,2))/2.0;
221 double e1 = (coord(i6,0)-coord(i3,0))/2.0, e2 = (coord(i6,1)-coord(i3,1))/2.0, e3 = (coord(i6,2)-coord(i3,2))/2.0;
222 double f1 = (coord(i1,0)-coord(i3,0))/2.0, f2 = (coord(i1,1)-coord(i3,1))/2.0, f3 = (coord(i1,2)-coord(i3,2))/2.0;
223 double h1 = (coord(i4,0)-coord(i6,0))/2.0, h2 = (coord(i4,1)-coord(i6,1))/2.0, h3 = (coord(i4,2)-coord(i6,2))/2.0;
225 double A = a1*c2*f3 - a1*c3*f2 - a2*c1*f3 + a2*c3*f1 +
227 double B = b1*c2*h3 - b1*c3*h2 - b2*c1*h3 + b2*c3*h1 +
229 double C = (a1*c2*h3 + b1*c2*f3) - (a1*c3*h2 + b1*c3*f2) -
230 (a2*c1*h3 + b2*c1*f3) + (a2*c3*h1 + b2*c3*f1) +
231 (a3*c1*h2 + b3*c1*f2) - (a3*c2*h1 + b3*c2*f1);
232 double D = a1*d2*f3 - a1*d3*f2 - a2*d1*f3 + a2*d3*f1 +
234 double E = b1*d2*h3 - b1*d3*h2 - b2*d1*h3 + b2*d3*h1 +
236 double F = (a1*d2*h3 + b1*d2*f3) - (a1*d3*h2 + b1*d3*f2) -
237 (a2*d1*h3 + b2*d1*f3) + (a2*d3*h1 + b2*d3*f1) +
238 (a3*d1*h2 + b3*d1*f2) - (a3*d2*h1 + b3*d2*f1);
239 double G = a1*e2*f3 - a1*e3*f2 - a2*e1*f3 + a2*e3*f1 +
241 double H = b1*e2*h3 - b1*e3*h2 - b2*e1*h3 + b2*e3*h1 +
243 double P = (a1*e2*h3 + b1*e2*f3) - (a1*e3*h2 + b1*e3*f2) -
244 (a2*e1*h3 + b2*e1*f3) + (a2*e3*h1 + b2*e3*f1) +
245 (a3*e1*h2 + b3*e1*f2) - (a3*e2*h1 + b3*e2*f1);
246 volumes[num_poly]=std::fabs(-2.0*(2.0*(A + B + D + E + G + H) + C + F + P)/9.0);
double coord(int_t i, int j) const