Problème de calcul de volume d'un tétraèdre irrégulier
Bonjour,
je voudrais qu'on m'aide à calculer le volume de tétraèdres irréguliers.
actuellement j'utilise la formule
Citation:
V=(A*H)/3.
V->volume
A->Aire
H->hauteur
Actuellement j'arrive à calculer le volume d'un tétraèdre irrégulier avec la formule en 3D, le problème est que plus j'ai des tétraèdres plus le calcul du volume est faux.
voici la fonction que j'utilise actuellement pour le calcul:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
double Tetraedre::Volume(Vertex _point)
{
double aire_base;
double hauteur;
double norme;
Vecteur v1;
Vecteur v2;
Vecteur v3;
v1.setCoordx(this->getpVertex(1).getCoordx() - this->getpVertex(0).getCoordx());
v1.setCoordy(this->getpVertex(1).getCoordy() - this->getpVertex(0).getCoordy());
v1.setCoordz(this->getpVertex(1).getCoordz() - this->getpVertex(0).getCoordz());
v2.setCoordx(this->getpVertex(2).getCoordx() - this->getpVertex(0).getCoordx());
v2.setCoordy(this->getpVertex(2).getCoordy() - this->getpVertex(0).getCoordy());
v2.setCoordz(this->getpVertex(2).getCoordz() - this->getpVertex(0).getCoordz());
v3 = v2 ^ v1;
norme = (double) sqrt(v3.getCoordx()*v3.getCoordx() +
v3.getCoordy()*v3.getCoordy() +
v3.getCoordz()*v3.getCoordz());
aire_base = norme / 2;
v1 = this->normale;
v2.setCoordx(_point.getCoordx() - this->getpVertex(0).getCoordx());
v2.setCoordy(_point.getCoordy() - this->getpVertex(0).getCoordy());
v2.setCoordz(_point.getCoordz() - this->getpVertex(0).getCoordz());
hauteur = v2 % v1;
hauteur = fabs(hauteur);
return 0.3333 * aire_base * hauteur;
} |
Merci