Master_Jul | J'en suis à ranger les valeurs trouvées dans des tableaux de structures, j'utilise des méthodes maison assez barbares du genre conversion de type qui ne sont surrement pas innocentes dans le déconnage du remplissage du tableau LesFacettes.
Code :
- #include <stdio.h>
- void main(void)
- {
- FILE *fichier;
- int valeurs,no_vertex=0,no_facette=0,i,j;
- char c;
- float x,y,z,a;
- struct Vertex
- {
- float x,y,z;
- };
- struct Facette
- {
- Vertex Points[4];
- int NbVertex;
- };
- Vertex LesVertex[5]; // la pyramide a 5 sommets
- Facette LesFacettes[5]; // la pyramide a 5 facettes
- fichier=fopen("Pyramide.obj","r" );
- do
- {
- valeurs=fscanf(fichier,"%c %f %f %f %f\n",&c,&x,&y,&z,&a);
- if(c=='v') // Si la ligne commence par "c"
- {
- printf("\nVertex %i\n",no_vertex);
- printf("x=%1.1f y=%1.1f z=%1.1f\n",x,y,z);
- LesVertex[no_vertex].x=x;
- LesVertex[no_vertex].y=y;
- LesVertex[no_vertex].z=z;
- no_vertex++;
- }
- else if(c=='f') // Si la ligne commence par "f"
- {
- printf("\nFacette %i\n",no_facette);
- if(valeurs==5)
- {
- printf("Points : %1.0f,%1.0f,%1.0f,%1.0f\n",x,y,z,a);
- for(i=0;i<5;i++)
- {
- LesFacettes[no_facette].Points[i].x=LesVertex[int(x)-1].x;
- LesFacettes[no_facette].Points[i].y=LesVertex[int(y)-1].y;
- LesFacettes[no_facette].Points[i].z=LesVertex[int(z)-1].z;
- };
- LesFacettes[no_facette].NbVertex=valeurs-1;
- }
- else
- {
- printf("Points : %1.0f,%1.0f,%1.0f\n",x,y,z);
- for(i=0;i<4;i++)
- {
- LesFacettes[no_facette].Points[i].x=LesVertex[int(x)-1].x;
- LesFacettes[no_facette].Points[i].y=LesVertex[int(y)-1].y;
- LesFacettes[no_facette].Points[i].z=LesVertex[int(z)-1].z;
- };
- LesFacettes[no_facette].NbVertex=valeurs-1;
- }
- no_facette++;
- }
- }
- while(!feof(fichier));
- fclose(fichier);
- // Lecture du contenu des tableaux :
- // Les vertex
- for(i=0;i<5;i++)
- {
- printf("\nVertex %i (tableau) :\n",i);
- printf("x=%1.1f,y=%1.1f,z=%1.1f\n",LesVertex[i].x,LesVertex[i].y,LesVertex[i].z);
- }
- // Les facettes
- for(i=0;i<5;i++)
- {
- printf("\nFacette %i (tableau) :\n",i);
- for(j=0;j<3;j++)
- printf("Coordonnees : x=%1.1f,y=%1.1f,z=%1.1f\n",LesFacettes[i].Points[j].x,LesFacettes[i].Points[j].y,LesFacettes[i].Points[j].z);
- printf("Nombre de facettes : %i\n",LesFacettes[i].NbVertex);
- }
- }
|
Message édité par Master_Jul le 17-03-2004 à 23:20:28
|