Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1407 connectés 

  FORUM HardWare.fr
  Programmation

  Demande d'aide en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Demande d'aide en C++

n°13575
fredgladia
Posté le 09-02-2001 à 13:13:21  profilanswer
 

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 !

mood
Publicité
Posté le 09-02-2001 à 13:13:21  profilanswer
 

n°13581
z51
Posté le 09-02-2001 à 13:27:39  profilanswer
 

non c'est pas ça.
A, B et C sont les indices dans la liste de vertices.
Dans ton exemple tu lis 8 vertice (0->7), et par exemple le triangle 0 est composé des vertices 0, 2 et 3.
 
Alors évidemment certains vertices sont partagés (ce qui peut poser des problèmes quend tu mappes, car alors tu peux avoir plusieurs couples (u,v) par vertex, mais c'est une autre histoire ...)
 
 
oilà, j'espère que ça répond à ta question.

n°13583
fredgladia
Posté le 09-02-2001 à 13:29:50  profilanswer
 

heu, non:(  
J'avais bien compris ça. Mon prob c'est justement pour mettre les données des points dans la table des faces, que j'utilise pas la suite.
Enfin c'est pas grave.

n°13586
z51
Posté le 09-02-2001 à 13:38:03  profilanswer
 

ok, ton pb c'est comment remplir la structure "face" avant d'avoir lu les indices ?....
Ben stocke tous tes vertices dans une liste, et recopie-les un à un dans tes faces.
Trois pointeurs seraient bien entendu préférables, parce que dans la majorité des cas t'auras pas mal de doublons (voire "triplons" ....)

n°13587
fredgladia
Posté le 09-02-2001 à 13:40:12  profilanswer
 

okay, thx !

n°13591
z51
Posté le 09-02-2001 à 13:42:35  profilanswer
 

c'est encore pas du tout ce que tu demandais, et t'ose pas me le dire, c'est ça ? :) :) :)

n°13627
fredgladia
Posté le 09-02-2001 à 16:20:47  profilanswer
 

lol
j'ai trouvé tout seul en fait
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Demande d'aide en C++

 

Sujets relatifs
Urgent!!!Besoin d'aideA l'aide, besoin d'un pro de l'assembleur !!!!!
Besoin d'aide pour une webcam liveaide en haskell
Programmer un client FTP à l'aide des APIs Wininet.dll - HelpA l'aide, problème de prog réseaux en C
Gros pb Interbase : a l'aide !!!Aide pour installation linux php, mysql, apache.
connection à un serveur mail à l'aide de commande perl 
Plus de sujets relatifs à : Demande d'aide en C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR