c'est je voudrai calculer c'est Oe/2 c'est pour ça j'utilise acos.
c'est bien ce que tu as fais mais sauf que la norme de vi et ne =1.
mais on fait, quand je fasse le calcul de Tetta j'aurai des valeurs indéterminés donc pour cela mon programme ne m'affiche plus rien. J'ai enlever le calcul de cosOe/2 j'ai resté sur cosOe, j'ai toujours le problème, donc ce n'est pas du calcul de l'angle. C'été du façon de faire le tableau .
Code :
- for (int e=0; e<this->Input->GetNumberOfEdges(); e++)
- {
- this->Input->GetEdgeVertices(e,ii,jj);//pour obtenir la barêtte Eiijj
- //calcul du norme ||N1+N2||
- Input->GetPointCoordinates(ii,Vi);//je donnes le coordonnées du ii et jj
- Input->GetPointCoordinates(jj,Vj);
- Ne[0]=Vi[0]+Vj[0];
- Ne[1]=Vi[1]+Vj[1];
- Ne[2]=Vi[2]+Vj[2];//additionner les 2 vecteurs Vi et Vj
- double norme=vtkMath::Norm(Ne);
- double Z=vtkMath::Dot(Vi,Ne)/(vtkMath::Norm(Vi)*vtkMath::Norm(Ne));//produit entre 2 vecteurs[3] le résultat dans Z cosOe=Ne.Vi
- //double Angle=acos(Z);
- //double Tetta=cos(Angle);//cosOe/2=cos(arccos(Ne.Vi))/2
- double Edge=this->Input->GetDistanceBetweenVertices(ii,jj);
- He=2*Edge*Z;
- double LambdaSquare=pow(Lambda,2);
- double Valeur=(Lambda-absolu);
- double ValeurSquare=pow(Valeur,2);
- if (absolu>Lambda)
- W=LambdaSquare/(r*ValeurSquare+LambdaSquare);
- else
- W=1;
- TableDeltaLambda[ii][0]-=W*He*Ne[0];
- TableDeltaLambda[ii][1]-=W*He*Ne[1];
- TableDeltaLambda[ii][2]-=W*He*Ne[2];
- TableDeltaLambda[jj][0]-=W*He*Ne[0];
- TableDeltaLambda[jj][1]-=W*He*Ne[1];
- TableDeltaLambda[jj][2]-=W*He*Ne[2];
- //cout<<"TableDeltaLambda[ii]"<<TableDeltaLambda[ii][0]<<TableDeltaLambda[ii][1]<<TableDeltaLambda[ii][2]<<endl;
- //cout<<"TableDeltaLambda[jj][0]"<<" "<<TableDeltaLambda[jj][0]<<" "<<"[1]"<<" "<<TableDeltaLambda[jj][1]<<" "<<"[2]"<<" "<<TableDeltaLambda[jj][2]<<endl;
- }
|
je vous ai mis cette boucle et c'est dans les 2 tableaux que je trouve le problème. Quand je les affiches, j'aurai les mêmes valeurs dans les 6 cas pourqoui????????