calcul de min et de max

calcul de min et de max - C++ - Programmation

Marsh Posté le 17-05-2007 à 03:08:58    

bonjour à tous,
 
J'ai un petit problème de faire le calcul de min et de max en c++.
En fait j'au un double He, tel que He est comprise entre 0.5<He<0.1e-020
mais on fait je vous dis ça mais moi je connais comment ça se pourra être puisque je calcul He en fonction de chaque maillage que j'ai donc je ne peux pas dire qu'elle est comprise entre telle et telle, puisque ça dépend de maillage est de son calcul. donc comment pourrai-je faire??????

Reply

Marsh Posté le 17-05-2007 à 03:08:58   

Reply

Marsh Posté le 17-05-2007 à 04:59:29    

on fait j'ai arrivé à trouver mon valeur de max mais j'arrive pas à trouver le bon min :(
 
voilà mon bou de code.

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h> 
  3. #include <conio.h> 
  4. #include "vtkSurface.h"
  5. #include "RenderWindow.h"
  6. #include <vtkCommand.h>
  7. #include <vtkMath.h>
  8. #include <math.h>
  9. #include "vtkSurfaceBase.h"
  10. #include <fstream>
  11. vtkIdType Edge,T1,T2,i,j;
  12. double X[3],Y[3],Z[3],Vi[3],Vj[3],Normal[3],Normalize,CourbureMoyenne,Min=0,Max=0;
  13. int main( int argc, char* argv[] )
  14. {
  15. ofstream myfile;
  16. myfile.open ("Min et Max.txt" );
  17. vtkSurface *Surface=vtkSurface::New();
  18. Surface->CreateFromFile(argv[1]);---------------------------->c'est mon maillage en 3D
  19. int NbEdge=Surface->GetNumberOfEdges();---------------------------->ça me passe le nombre des arêtes
  20. for (int Edge=0;Edge<NbEdge;Edge++)
  21. {
  22. vtkIdType T1,T2,i,j;
  23. Surface->GetEdgeFaces(Edge,T1,T2);//elle me passe les 2 faces de chaque arête
  24. Surface->GetTriangleNormal(T1,Vi);//elle me passe le normal
  25. Surface->GetTriangleNormal(T2,Vj);
  26. Normal[0]=Vi[0]+Vj[0];
  27. Normal[1]=Vi[1]+Vj[1];
  28. Normal[2]=Vi[2]+Vj[2];//additionner les 2 vecteurs Vi et Vj
  29. vtkMath::Normalize(Normal);
  30. Surface->GetEdgeVertices(Edge,i,j);
  31. double Alpha[3];
  32. vtkMath::Cross(Normal,Vi,Alpha);
  33. double SinAlpha=vtkMath::Norm(Alpha);
  34. CourbureMoyenne=2*(Surface->GetDistanceBetweenVertices(i,j))*SinAlpha;
  35. if (CourbureMoyenne!=0)
  36. {
  37.  if(Min<=pow(10,-30) || Max>=1)
  38.           {
  39.      Min=CourbureMoyenne;
  40.             Max=CourbureMoyenne;
  41.   myfile<<"min="<<Min<<"  "<<"max="<<Max<<endl;
  42.            }
  43.         if(CourbureMoyenne<Min) 
  44.             Min=CourbureMoyenne; 
  45.         if(CourbureMoyenne>Max) 
  46.             Max=CourbureMoyenne;
  47.     }
  48. }
  49. cout<<"min="<<Min<<"  "<<"max="<<Max<<endl;
  50. myfile.close();
  51. return(0); 
  52. }

 
Merci pour vos aides :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed