salut,
J'ai un petit problème en programmation si quelqu'un pouvait m'aider ce serait cool.
Voilà mon problème, j'aimerais bien pouvoir lire des données d'un fichier *.ase
C'est basicallement un fichier texte regroupant des coordonnées.
Partie de mon source qui est important :
*********************************************************
Definition dans le programme pour enregistrer les données
*********************************************************
typedef struct tagVERTEX
{
float x, y, z; // 3 coordonnées pour 1 point
} VERTEX;
typedef struct tagFACES
{
VERTEX vertex[3];
} FACES;
typedef struct tagSECTOR
{
int numfaces;
FACES* faces;
} SECTOR;
SECTOR example1;
J'aimerais lire les données d'un fichier ASE :
En voici un exemple:
*MESH_NUMVERTEX 8 ; NOMBRE DE POINTS
*MESH_NUMFACES 12 ; NOMBRE DE FACES
*MESH_VERTEX_LIST {
*MESH_VERTEX 0 0.0000 0.0000 0.0000 ;VERTEX COORDONNEES : X,Z,Y
*MESH_VERTEX 1 50.0000 0.0000 0.0000
*MESH_VERTEX 2 0.0000 100.0000 0.0000
*MESH_VERTEX 3 50.0000 100.0000 0.0000
*MESH_VERTEX 4 0.0000 0.0000 50.0000
*MESH_VERTEX 5 50.0000 0.0000 50.0000
*MESH_VERTEX 6 0.0000 100.0000 50.0000
*MESH_VERTEX 7 50.0000 100.0000 50.0000
}
*MESH_FACE_LIST { ; FACE DETAILS, LES 3 POINTS D'UNE FACE, AVEC LE LIEN (AB-BC)
*MESH_FACE 0: A: 0 B: 2 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 1
*MESH_FACE 1: A: 3 B: 1 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 1
*MESH_FACE 2: A: 4 B: 5 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 0
*MESH_FACE 3: A: 7 B: 6 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 0
*MESH_FACE 4: A: 0 B: 1 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 4
*MESH_FACE 5: A: 5 B: 4 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 4
*MESH_FACE 6: A: 1 B: 3 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 3
*MESH_FACE 7: A: 7 B: 5 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 3
*MESH_FACE 8: A: 3 B: 2 C: 6 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 6 *MESH_MTLID 5
*MESH_FACE 9: A: 6 B: 7 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 6 *MESH_MTLID 5
*MESH_FACE 10: A: 2 B: 0 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 7 *MESH_MTLID 2
*MESH_FACE 11: A: 4 B: 6 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 7 *MESH_MTLID 2
Pour le moment rien d'autre ne m'intéresse, seulement les coordonnées des points et les
informations sur les faces.
Je prévois d'interpréter le code ainsi :
Routine :
void readstr(FILE *f,char *string)
{
do
{
fgets(string, 255, f);
} while ((string[0] == '/') || (string[0] == '\n'));
return;
}
Routine :
void World()
{
float x, y, z;
int numvertex
int numfaces
FILE *filein;
char oneline[255];
filein = fopen("example.ase", "rt" ); //nom du fichier
readstr(filein,oneline);
sscanf(oneline, "MESH_NUMVERTEX %d\n", &numvertex);
sscanf(oneline, "MESH_NUMFACES %d\n", &numfaces);
example1.faces = new TRIANGLE[numfaces];
example1.numfaces = numfaces;
for (int vert = 0; vert < 3; vert++) // boucle pour les points
{
readstr(filein,oneline);
sscanf(oneline, "%f %f %f %f", &x, &z, &y);
sector1.triangle[loop].vertex[vert].x = x;
sector1.triangle[loop].vertex[vert].z = z;
sector1.triangle[loop].vertex[vert].y = y;
}
fclose(filein);
return;
}
Mais je ne sais pas comment interpreter et stocker les informations sur les points
dans la structure des FACES.
Si vous pouviez m'aider ce serait vraiment super.
Merci dans tous les cas.
Fred.
PS : Désolé je sais que c'est mal présenté et expliqué donc si vous ne comprenez pas bien ce que je cherche à faire, vous pouvez toujours m'envoyer un mail à fredgladia@hotmail.com
Ce forum est cool !