si IG, es precisamente para el visualizador de figuras 3d :S
Y el MS visual c++ este me daba por culo para hacer precisamente eso y pff
No he ido a clase en todo el año ni he hecho las practicas ni nada y me he puesto con eso.
En realidad la recursividad es mas larga que 2 estructuras, pero hay un ciclo de "dependencias"
PolygonCell -> VertexList -> VertexCell -> PolygonList -> PolygonCell
typedef char CharString[100];
typedef struct {
int length;
CharString char_at;
}String;
typedef float Matrix[3][3];
typedef struct {
float x,y,z;
}Vector;
typedef struct {
int x,y,z;
}ScreenRec;
typedef struct{
PolygonPtr poly;
PolygonListPtr rest;
}PolygonListCell, *PoygonListPtr;
typedef struct{
Vector local_pos,world_pos,eye_pos,vertex_normal;
ScreenRec screen_pos;
PolygonListPtr poly_list_head;
VertexPtr next;
}VertexCell,*VertexPtr;
typedef struct{
VertexPtr vertex;
VertexListPtr rest;
}VertexListCell, *VertexListPtr;
typedef struct{
VertexListPtr vertex_list_head;
Vector poly_normal;
int poly_visible;
PolygonPtr next;
}PolygonCell,*PolygonPtr;
typedef struct{
int no_polygons;
PolygonPtr polygon_head;
SurfacePtr next;
}SurfaceCell,*SurfacePtr;
typedef struct{
String name;
int id_no,no_vertices,no_surfaces;
SurfacePtr surface_head;
VertexPtr vertex_head;
Matrix transformation;
ObjectPtr next;
}ObjectCell,*ObjectPtr;
Bueno tras 3 minutos ( es lo que me ha costado arreglarlo... en fin )
he quitado los typedef, quitado los punteros ( como tipo ) , y los he metido a mano, y compila.
struct PolygonListCell{
struct PolygonCell *poly;
struct PolygonListCell *rest;
};
struct VertexCell{
Vector local_pos,world_pos,eye_pos,vertex_normal;
ScreenRec screen_pos;
struct PolygonListCell *poly_list_head;
struct VertexCell *next;
};
struct VertexListCell{
struct VertexCell *vertex;
struct VertexListCell *rest;
};
struct PolygonCell{
struct VertexListCell *vertex_list_head;
Vector poly_normal;
int poly_visible;
struct PolygonCell *next;
};
struct SurfaceCell{
int no_polygons;
struct PolygonCell *polygon_head;
struct SurfaceCell *next;
};
struct ObjectCell{
String name;
int id_no,no_vertices,no_surfaces;
struct SurfaceCell *surface_head;
struct VertexCell *vertex_head;
Matrix transformation;
struct ObjectCell *next;
};
Me habia puesto a hacerlo en java con el JOGL, pero joer no me empapo de nada, no se pintar en la pantalla mas que en el metodo display() , pero no se cambiarlo asiq nada, parecia facil desde java :S
¿ Tu como lo hiciste ? ¿ en c++ , java ,ada ...?