96 const Domaine_t& domaine=this->mon_dom.valeur();
98 double prod1,prod2,xn,yn,zn;
99 int_t som0, som1, som2, som3,som4,som5;
103 som0 = domaine.sommet_elem(ielem,0);
104 som1 = domaine.sommet_elem(ielem,1);
105 som2 = domaine.sommet_elem(ielem,2);
106 som3 = domaine.sommet_elem(ielem,3);
107 som4 = domaine.sommet_elem(ielem,4);
108 som5 = domaine.sommet_elem(ielem,5);
109 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]) )
110 || (est_egal(dom.
coord(som1,0),pos[0]) && est_egal(dom.
coord(som1,1),pos[1]) && est_egal(dom.
coord(som1,2),pos[2]))
111 || (est_egal(dom.
coord(som2,0),pos[0]) && est_egal(dom.
coord(som2,1),pos[1]) && est_egal(dom.
coord(som2,2),pos[2]))
112 || (est_egal(dom.
coord(som3,0),pos[0]) && est_egal(dom.
coord(som3,1),pos[1]) && est_egal(dom.
coord(som3,2),pos[2]))
113 || (est_egal(dom.
coord(som4,0),pos[0]) && est_egal(dom.
coord(som4,1),pos[1]) && est_egal(dom.
coord(som4,2),pos[2]))
114 || (est_egal(dom.
coord(som5,0),pos[0]) && est_egal(dom.
coord(som5,1),pos[1]) && est_egal(dom.
coord(som5,2),pos[2]))
118 for (
int j=0; j<5; j++)
123 som0 = domaine.sommet_elem(ielem,0);
124 som1 = domaine.sommet_elem(ielem,1);
125 som2 = domaine.sommet_elem(ielem,3);
126 som3 = domaine.sommet_elem(ielem,2);
129 som0 = domaine.sommet_elem(ielem,0);
130 som1 = domaine.sommet_elem(ielem,2);
131 som2 = domaine.sommet_elem(ielem,3);
132 som3 = domaine.sommet_elem(ielem,4);
135 som0 = domaine.sommet_elem(ielem,1);
136 som1 = domaine.sommet_elem(ielem,2);
137 som2 = domaine.sommet_elem(ielem,4);
138 som3 = domaine.sommet_elem(ielem,0);
141 som0 = domaine.sommet_elem(ielem,0);
142 som1 = domaine.sommet_elem(ielem,1);
143 som2 = domaine.sommet_elem(ielem,2);
144 som3 = domaine.sommet_elem(ielem,3);
147 som0 = domaine.sommet_elem(ielem,3);
148 som1 = domaine.sommet_elem(ielem,4);
149 som2 = domaine.sommet_elem(ielem,5);
150 som3 = domaine.sommet_elem(ielem,0);
163 prod1 = xn * ( dom.
coord(som3,0) - dom.
coord(som0,0) )
164 + yn * ( dom.
coord(som3,1) - dom.
coord(som0,1) )
165 + zn * ( dom.
coord(som3,2) - dom.
coord(som0,2) );
166 prod2 = xn * ( pos[0] - dom.
coord(som0,0) )
167 + yn * ( pos[1] - dom.
coord(som0,1) )
168 + zn * ( pos[2] - dom.
coord(som0,2) );
201 const Domaine_t& domaine=this->mon_dom.valeur();
202 const IntTab_t& elem=domaine.les_elems();
204 int_t size_tot = domaine.nb_elem_tot();
206 for (
int_t num_poly=0; num_poly<size_tot; num_poly++)
208 int_t i1=elem(num_poly,0),
216 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;
217 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;
218 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;
219 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;
220 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;
221 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;
222 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;
224 double A = a1*c2*f3 - a1*c3*f2 - a2*c1*f3 + a2*c3*f1 +
226 double B = b1*c2*h3 - b1*c3*h2 - b2*c1*h3 + b2*c3*h1 +
228 double C = (a1*c2*h3 + b1*c2*f3) - (a1*c3*h2 + b1*c3*f2) -
229 (a2*c1*h3 + b2*c1*f3) + (a2*c3*h1 + b2*c3*f1) +
230 (a3*c1*h2 + b3*c1*f2) - (a3*c2*h1 + b3*c2*f1);
231 double D = a1*d2*f3 - a1*d3*f2 - a2*d1*f3 + a2*d3*f1 +
233 double E = b1*d2*h3 - b1*d3*h2 - b2*d1*h3 + b2*d3*h1 +
235 double F = (a1*d2*h3 + b1*d2*f3) - (a1*d3*h2 + b1*d3*f2) -
236 (a2*d1*h3 + b2*d1*f3) + (a2*d3*h1 + b2*d3*f1) +
237 (a3*d1*h2 + b3*d1*f2) - (a3*d2*h1 + b3*d2*f1);
238 double G = a1*e2*f3 - a1*e3*f2 - a2*e1*f3 + a2*e3*f1 +
240 double H = b1*e2*h3 - b1*e3*h2 - b2*e1*h3 + b2*e3*h1 +
242 double P = (a1*e2*h3 + b1*e2*f3) - (a1*e3*h2 + b1*e3*f2) -
243 (a2*e1*h3 + b2*e1*f3) + (a2*e3*h1 + b2*e3*f1) +
244 (a3*e1*h2 + b3*e1*f2) - (a3*e2*h1 + b3*e2*f1);
245 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