1 #include <unistd.h> 2 #include <math.h> 3 4 5 #include "globals.h" 6 #include "model.h" 7 8 InitAsteroid(int asteroidNum)9void InitAsteroid(int asteroidNum) 10 { 11 int x, y, z; 12 int VertexNum; 13 float color; 14 15 AsteroidModels[asteroidNum]=(struct Model *)malloc(sizeof(struct Model)); 16 17 AsteroidModels[asteroidNum]->NumSides=8; 18 19 AsteroidModels[asteroidNum]->Sides=(struct Triangle *)malloc(sizeof(struct Triangle)*8); 20 21 AsteroidModels[asteroidNum]->Points=NULL; 22 23 for (x=-1; x<2; x+=2) { 24 for (y=-1; y<2; y+=2) { 25 for (z=-1; z<2; z+=2) { 26 VertexNum=(x*4+y*2+z+7)/2; 27 28 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[0]=(struct Point *)malloc(sizeof(struct Point)); 29 AsteroidModels[asteroidNum]->Sides[VertexNum].VertexColors[0]=(struct Color *)malloc(sizeof(struct Color)); 30 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[0]->x=x; 31 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[0]->y=0.0; 32 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[0]->z=0.0; 33 34 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[1]=(struct Point *)malloc(sizeof(struct Point)); 35 AsteroidModels[asteroidNum]->Sides[VertexNum].VertexColors[1]=(struct Color *)malloc(sizeof(struct Color)); 36 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[1]->x=0.0; 37 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[1]->y=y; 38 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[1]->z=0.0; 39 40 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[2]=(struct Point *)malloc(sizeof(struct Point)); 41 AsteroidModels[asteroidNum]->Sides[VertexNum].VertexColors[2]=(struct Color *)malloc(sizeof(struct Color)); 42 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[2]->x=0.0; 43 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[2]->y=0.0; 44 AsteroidModels[asteroidNum]->Sides[VertexNum].Vertices[2]->z=z; 45 } 46 } 47 } 48 49 GenModelPoints(AsteroidModels[asteroidNum]); 50 RandomizeModel(AsteroidModels[asteroidNum], 0.30); 51 AddModelDetail(&AsteroidModels[asteroidNum]); 52 RandomizeModel(AsteroidModels[asteroidNum], 0.60); 53 RandomizeModelColors(AsteroidModels[asteroidNum]); 54 AddModelDetail(&AsteroidModels[asteroidNum]); 55 RandomizeModel(AsteroidModels[asteroidNum], 0.30); 56 AddModelDetail(&AsteroidModels[asteroidNum]); 57 ShrinkModel(AsteroidModels[asteroidNum], 1.0/FindFurthestPoint(AsteroidModels[asteroidNum])); 58 ReCenterModel(AsteroidModels[asteroidNum]); 59 } 60