hamoudasafira1 | on fait j'ai arrivé à trouver mon valeur de max mais j'arrive pas à trouver le bon min
voilà mon bou de code.
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include "vtkSurface.h"
- #include "RenderWindow.h"
- #include <vtkCommand.h>
- #include <vtkMath.h>
- #include <math.h>
- #include "vtkSurfaceBase.h"
- #include <fstream>
- vtkIdType Edge,T1,T2,i,j;
- double X[3],Y[3],Z[3],Vi[3],Vj[3],Normal[3],Normalize,CourbureMoyenne,Min=0,Max=0;
- int main( int argc, char* argv[] )
- {
- ofstream myfile;
- myfile.open ("Min et Max.txt" );
- vtkSurface *Surface=vtkSurface::New();
- Surface->CreateFromFile(argv[1]);---------------------------->c'est mon maillage en 3D
- int NbEdge=Surface->GetNumberOfEdges();---------------------------->ça me passe le nombre des arêtes
- for (int Edge=0;Edge<NbEdge;Edge++)
- {
- vtkIdType T1,T2,i,j;
- Surface->GetEdgeFaces(Edge,T1,T2);//elle me passe les 2 faces de chaque arête
- Surface->GetTriangleNormal(T1,Vi);//elle me passe le normal
- Surface->GetTriangleNormal(T2,Vj);
- Normal[0]=Vi[0]+Vj[0];
- Normal[1]=Vi[1]+Vj[1];
- Normal[2]=Vi[2]+Vj[2];//additionner les 2 vecteurs Vi et Vj
- vtkMath::Normalize(Normal);
- Surface->GetEdgeVertices(Edge,i,j);
- double Alpha[3];
- vtkMath::Cross(Normal,Vi,Alpha);
- double SinAlpha=vtkMath::Norm(Alpha);
- CourbureMoyenne=2*(Surface->GetDistanceBetweenVertices(i,j))*SinAlpha;
- if (CourbureMoyenne!=0)
- {
- if(Min<=pow(10,-30) || Max>=1)
- {
- Min=CourbureMoyenne;
- Max=CourbureMoyenne;
- myfile<<"min="<<Min<<" "<<"max="<<Max<<endl;
- }
- if(CourbureMoyenne<Min)
- Min=CourbureMoyenne;
- if(CourbureMoyenne>Max)
- Max=CourbureMoyenne;
- }
- }
- cout<<"min="<<Min<<" "<<"max="<<Max<<endl;
- myfile.close();
- return(0);
- }
|
Merci pour vos aides |