annotate main_GL.cbc @ 4:5535e1d5e693 default tip

add python programs. turing machine simulater, finite statemachine simulator, card game.
author kent
date Sun, 20 Jul 2008 22:11:48 +0900
parents 01290d71ef9c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
1 #include<stdio.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
2 #include<stdlib.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
3 #include<unistd.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
4 #include<time.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
5 #include<float.h>
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
6 #include<math.h>
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
7 #include<SDL.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
8 #include<OpenGL/gl.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
9 #include<OpenGL/glu.h>
249965d0a68f GL is no finish.
kent
parents:
diff changeset
10
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
11 #ifdef DEBUG
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
12 #define DEBUGlog(f, args...) \
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
13 fprintf(stderr, "in %s: "f, __FUNCTION__, ## args)
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
14 #else
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
15 #define DEBUGlog(f, args...) ;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
16 #endif
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
17
249965d0a68f GL is no finish.
kent
parents:
diff changeset
18 #define W_HEIGHT 480
249965d0a68f GL is no finish.
kent
parents:
diff changeset
19 #define W_WIDTH 640
249965d0a68f GL is no finish.
kent
parents:
diff changeset
20
249965d0a68f GL is no finish.
kent
parents:
diff changeset
21 /*
249965d0a68f GL is no finish.
kent
parents:
diff changeset
22 N body problem
249965d0a68f GL is no finish.
kent
parents:
diff changeset
23 */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
24
249965d0a68f GL is no finish.
kent
parents:
diff changeset
25 /* parameters */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
26 static int NUM_BODY = 3;
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
27 static float Gravitation = 100.0f; // ?
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
28 static float delta = 0.05f; // 0.01 ~ 100 ?
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
29 static const float eps = 15.0f;
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
30 /*
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
31 * だいたい、平均距離をn倍にするんだったら、Gravitationoはn^2倍、
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
32 * epsはn倍
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
33 */
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
34
249965d0a68f GL is no finish.
kent
parents:
diff changeset
35 /* for OpenGL Utility. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
36 GLUquadricObj **sphere;
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
37 float DefDistance = 300.0f;
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
38
249965d0a68f GL is no finish.
kent
parents:
diff changeset
39 typedef struct
249965d0a68f GL is no finish.
kent
parents:
diff changeset
40 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
41 /* star's parameter. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
42 float weight;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
43 float a[3]; /* acceleration */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
44 float v[3]; /* velocity */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
45 float r[3]; /* position */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
46 /* for SDL. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
47 //SDL_Rect rect;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
48 } body;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
49 body *stars_old, *stars_new;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
50
249965d0a68f GL is no finish.
kent
parents:
diff changeset
51
249965d0a68f GL is no finish.
kent
parents:
diff changeset
52 void start(void);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
53 __code initialize(int num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
54 __code randomInit(SDL_Surface *screen, int num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
55 __code starsInit(SDL_Surface *screen, int num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
56 __code loop(int count, SDL_Surface *screen, int num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
57 __code compute(int count, SDL_Surface *screen, int num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
58 __code nextTurn(int count, SDL_Surface *screen, int num);
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
59 __code drawStars(SDL_Surface *screen, int num);
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
60 __code AdjustLooking(float distance, int count, SDL_Surface *screen, int num);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
61
249965d0a68f GL is no finish.
kent
parents:
diff changeset
62 int main(int argc, char **argv)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
63 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
64 int ch;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
65 while ((ch = getopt(argc, argv, "s:g:")) != -1) {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
66 switch (ch) {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
67 case 's':
249965d0a68f GL is no finish.
kent
parents:
diff changeset
68 delta = atof(optarg);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
69 break;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
70 case 'g':
249965d0a68f GL is no finish.
kent
parents:
diff changeset
71 Gravitation = atof(optarg);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
72 break;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
73 case '?':
249965d0a68f GL is no finish.
kent
parents:
diff changeset
74 default:
249965d0a68f GL is no finish.
kent
parents:
diff changeset
75 break;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
76 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
77 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
78 start();
249965d0a68f GL is no finish.
kent
parents:
diff changeset
79 return 0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
80 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
81 void start()
249965d0a68f GL is no finish.
kent
parents:
diff changeset
82 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
83 goto initialize(NUM_BODY);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
84 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
85
249965d0a68f GL is no finish.
kent
parents:
diff changeset
86 __code finish(int ret, int num)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
87 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
88 int i;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
89 DEBUGlog("Gravity = %e\n", Gravitation);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
90 DEBUGlog("FLT_MAX = %e\n", FLT_MAX);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
91 DEBUGlog("FLT_MAX_EXP = %d\n", FLT_MAX_EXP);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
92 DEBUGlog("FLT_MIN = %e\n", FLT_MIN);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
93 DEBUGlog("FLT_MIN_EXP = %d\n", FLT_MIN_EXP);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
94 DEBUGlog("FLT_EPSILON = %e\n", FLT_EPSILON);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
95 free(stars_old);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
96 free(stars_new);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
97 for( i=0; i<NUM_BODY; i++){
249965d0a68f GL is no finish.
kent
parents:
diff changeset
98 gluDeleteQuadric(sphere[i]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
99 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
100 free(sphere);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
101 exit(ret);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
102 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
103
249965d0a68f GL is no finish.
kent
parents:
diff changeset
104
249965d0a68f GL is no finish.
kent
parents:
diff changeset
105 __code initialize(int num)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
106 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
107 SDL_Surface *screen;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
108 int i;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
109
249965d0a68f GL is no finish.
kent
parents:
diff changeset
110 /* malloc. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
111 stars_old = malloc( sizeof(body)*num );
249965d0a68f GL is no finish.
kent
parents:
diff changeset
112 stars_new = malloc( sizeof(body)*num );
249965d0a68f GL is no finish.
kent
parents:
diff changeset
113 sphere = malloc( sizeof(GLUquadricObj*)*num );
249965d0a68f GL is no finish.
kent
parents:
diff changeset
114 if (stars_old==NULL||stars_new==NULL||sphere==NULL){
249965d0a68f GL is no finish.
kent
parents:
diff changeset
115 perror("malloc");
249965d0a68f GL is no finish.
kent
parents:
diff changeset
116 goto finish(1, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
117 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
118
249965d0a68f GL is no finish.
kent
parents:
diff changeset
119 /* SDL initialization. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
120 if(SDL_Init(SDL_INIT_VIDEO) < 0){ //Could we start SDL_VIDEO?
249965d0a68f GL is no finish.
kent
parents:
diff changeset
121 fprintf(stderr,"Couldn't init SDL"); //Nope, output to stderr and quit
249965d0a68f GL is no finish.
kent
parents:
diff changeset
122 exit(1);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
123 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
124 SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
125 SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
126 SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
127 SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
128 SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
129
249965d0a68f GL is no finish.
kent
parents:
diff changeset
130 screen = SDL_SetVideoMode(W_WIDTH, W_HEIGHT, 32, SDL_HWSURFACE | SDL_RESIZABLE | SDL_OPENGL ); //Create a 640x480x32 resizable window
249965d0a68f GL is no finish.
kent
parents:
diff changeset
131 atexit(SDL_Quit); //Now that we're enabled, make sure we cleanup
249965d0a68f GL is no finish.
kent
parents:
diff changeset
132
249965d0a68f GL is no finish.
kent
parents:
diff changeset
133 /* initialize OpenGL. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
134 glViewport(0,0,screen->w,screen->h);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
135 glMatrixMode(GL_PROJECTION);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
136 glLoadIdentity();
249965d0a68f GL is no finish.
kent
parents:
diff changeset
137 gluPerspective( 60.0, (float)screen->w/(float)screen->h, 1.0, 1000.0);
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
138 gluLookAt( 300.0,300.0,300.0, 0.0,0.0,0.0, 1.0,0.0,0.0);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
139 glClearColor(0.0, 0.0, 0.0, 0.0);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
140 glMatrixMode(GL_MODELVIEW);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
141
249965d0a68f GL is no finish.
kent
parents:
diff changeset
142 for( i=0; i<num; i++){
249965d0a68f GL is no finish.
kent
parents:
diff changeset
143 sphere[i] = gluNewQuadric();
249965d0a68f GL is no finish.
kent
parents:
diff changeset
144 gluQuadricDrawStyle(sphere[i], GLU_FILL);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
145 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
146
249965d0a68f GL is no finish.
kent
parents:
diff changeset
147 goto starsInit(screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
148 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
149
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
150 __code starsInitRandom(SDL_Surface *screen, int num)
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
151 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
152 int i;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
153 srandom(time(NULL));
249965d0a68f GL is no finish.
kent
parents:
diff changeset
154 for (i=0; i<num; i++){ // this loop should be split into few code segment..
249965d0a68f GL is no finish.
kent
parents:
diff changeset
155 stars_old[i].weight = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
156 stars_old[i].v[0] = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
157 stars_old[i].v[1] = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
158 stars_old[i].v[2] = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
159 stars_old[i].r[0] = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
160 stars_old[i].r[1] = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
161 stars_old[i].r[2] = random()/(RAND_MAX+1.0)*5+5;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
162 stars_new[i].weight = stars_old[i].weight;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
163 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
164
249965d0a68f GL is no finish.
kent
parents:
diff changeset
165 goto loop(0, screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
166 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
167 __code starsInit(SDL_Surface *screen, int num)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
168 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
169 int i;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
170 /* */
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
171 stars_old[0].weight = 1000;
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
172 stars_old[0].v[0] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
173 stars_old[0].v[1] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
174 stars_old[0].v[2] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
175 stars_old[0].r[0] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
176 stars_old[0].r[1] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
177 stars_old[0].r[2] = 0.0;
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
178 /* */
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
179 stars_old[1].weight = 5;
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
180 stars_old[1].v[0] = 0.1;
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
181 stars_old[1].v[1] = 5.0;
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
182 stars_old[1].v[2] = 0.0;
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
183 stars_old[1].r[0] = 100.0;
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
184 stars_old[1].r[1] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
185 stars_old[1].r[2] = 0.0;
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
186 /* */
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
187 stars_old[2].weight = 5;
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
188 stars_old[2].v[0] = 0.0;
1
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
189 stars_old[2].v[1] = -5.0;
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
190 stars_old[2].v[2] = 0.1;
09e774f4433f main_GL is runnable.
kent
parents: 0
diff changeset
191 stars_old[2].r[0] = -100.0;
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
192 stars_old[2].r[1] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
193 stars_old[2].r[2] = 0.0;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
194
249965d0a68f GL is no finish.
kent
parents:
diff changeset
195 for( i=0; i<num; i++){
249965d0a68f GL is no finish.
kent
parents:
diff changeset
196 stars_new[i].weight = stars_old[i].weight;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
197 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
198
249965d0a68f GL is no finish.
kent
parents:
diff changeset
199 goto loop(0, screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
200 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
201
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
202
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
203 /* MAIN LOOP ROUTIN
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
204 *
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
205 +------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
206 | loop |<-----------------------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
207 +---+--+ |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
208 +-----------+ |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
209 |count=num | count<num |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
210 +---v------+ +--v-------------+ |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
211 | nextTurn | | COMPUTE ROUTIN | |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
212 +---+------+ +-------+--------+ |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
213 | | |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
214 +---v---------+ v |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
215 | DRAW ROUTIN +----->+----------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
216 +-------------+ back to loop
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
217 */
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
218 __code loop(int count, SDL_Surface *screen, int num)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
219 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
220 SDL_Event event;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
221
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
222 usleep(1000);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
223 /* check SDL event. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
224 while(SDL_PollEvent(&event)){ //Poll events
249965d0a68f GL is no finish.
kent
parents:
diff changeset
225 switch(event.type){ //Check event type
249965d0a68f GL is no finish.
kent
parents:
diff changeset
226 case SDL_QUIT: //User hit the X (or equivelent)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
227 goto finish(1, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
228 case SDL_KEYDOWN:
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
229 if (event.key.state==SDL_PRESSED){
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
230 switch(event.key.keysym.sym){
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
231 case SDLK_UP:
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
232 goto AdjustLooking(DefDistance/=1.2, count, screen, num);
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
233 case SDLK_DOWN:
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
234 goto AdjustLooking(DefDistance*=1.2, count, screen, num);
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
235 case SDLK_l:
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
236 goto AdjustLooking(DefDistance, count, screen, num);
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
237 case SDLK_q:
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
238 goto finish(0, num);
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
239 default:
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
240 break;
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
241 }
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
242 }
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
243 break;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
244 default:
249965d0a68f GL is no finish.
kent
parents:
diff changeset
245 break;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
246 } //Finished with current event
249965d0a68f GL is no finish.
kent
parents:
diff changeset
247 } //Done with all events for now
249965d0a68f GL is no finish.
kent
parents:
diff changeset
248
249965d0a68f GL is no finish.
kent
parents:
diff changeset
249 if ( count<num ){
249965d0a68f GL is no finish.
kent
parents:
diff changeset
250 DEBUGlog("count %d, goto commpute().\n", count);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
251 goto compute(count, screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
252 }else{
249965d0a68f GL is no finish.
kent
parents:
diff changeset
253 DEBUGlog("count %d, goto nextTurn()\n", count);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
254 goto nextTurn(count, screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
255 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
256 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
257
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
258 __code AdjustLooking(float distance, int count, SDL_Surface *screen, int num)
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
259 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
260 glMatrixMode(GL_PROJECTION);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
261 glLoadIdentity();
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
262 gluPerspective( 60.0, (float)screen->w/(float)screen->h, 1.0, distance*2.5);
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
263 gluLookAt( distance,distance,distance, 0.0,0.0,0.0, 1.0,0.0,0.0);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
264 glClearColor(0.0, 0.0, 0.0, 0.0);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
265 glMatrixMode(GL_MODELVIEW);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
266
249965d0a68f GL is no finish.
kent
parents:
diff changeset
267 goto loop(0, screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
268 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
269
249965d0a68f GL is no finish.
kent
parents:
diff changeset
270 /*
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
271 * COMPUTING ROUTINs
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
272 *
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
273 * next x = x+dx
249965d0a68f GL is no finish.
kent
parents:
diff changeset
274 * dx = v*dt => dx/dt = v
249965d0a68f GL is no finish.
kent
parents:
diff changeset
275 * dv = a*dt => dv/dt = a
249965d0a68f GL is no finish.
kent
parents:
diff changeset
276 * a = F/m;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
277 * F = F1 + F2 + ... + Fn
249965d0a68f GL is no finish.
kent
parents:
diff changeset
278 * Fi = G m1m2/r^2
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
279 |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
280 +-----v-----+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
281 | compute |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
282 +-----+-----+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
283 |<----------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
284 +-----v---------+ | i++
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
285 | computeForce +-+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
286 +-----+---------+ i<num
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
287 | i==num
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
288 +-----+---------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
289 | com|ute_out |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
290 +-----+---------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
291 v to loop
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
292 */
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
293 __code compute_out(int count, SDL_Surface *screen, int num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
294 __code computeForce(int i, int count, SDL_Surface *screen, int num);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
295 __code compute(int count, SDL_Surface *screen, int num)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
296 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
297 /* a is accel this planet receive now. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
298 stars_old[count].a[0]=stars_old[count].a[1]=stars_old[count].a[2]=0.0f;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
299 DEBUGlog("count=%d\n", count);
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
300
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
301 goto computeForce( 0, count, screen, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
302 }
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
303 __code computeForce(int i, int count, SDL_Surface *screen, int num)
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
304 {
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
305 //float F;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
306 float d0, d1, d2, d;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
307 float a;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
308 //body *o, *m;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
309 //o = &stars_old[i]; m = &stars_old[count];
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
310
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
311 if (i>=num) goto compute_out(count, screen, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
312 /* skip compute with itself. */
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
313 else if (i==count) goto computeForce(i+1, count, screen, num);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
314
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
315 /* compute distance between two i-th planet and itself. */
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
316 d0 = stars_old[i].r[0] - stars_old[count].r[0];
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
317 d1 = stars_old[i].r[1] - stars_old[count].r[1];
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
318 d2 = stars_old[i].r[2] - stars_old[count].r[2];
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
319 d = ( d0*d0+d1*d1+d2*d2+eps*eps );
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
320 /* compute force it receive from i-th planet. */
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
321 //F = Gravitation * stars_old[i].weight * stars_old[count].weight / d;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
322 /* and accel. */
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
323 //a = F/stars_old[count].weight;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
324 a = Gravitation/d * stars_old[i].weight ;
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
325 stars_old[count].a[0] += a*d0/sqrtf(d);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
326 stars_old[count].a[1] += a*d1/sqrtf(d);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
327 stars_old[count].a[2] += a*d2/sqrtf(d);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
328 DEBUGlog("a=%e, d=%e, d0=%e\n", a, d, d0);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
329 DEBUGlog("g*w=%e\n", Gravitation*stars_old[i].weight);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
330
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
331 goto computeForce( i+1, count, screen, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
332 }
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
333 __code compute_out(int count, SDL_Surface *screen, int num)
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
334 {
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
335
249965d0a68f GL is no finish.
kent
parents:
diff changeset
336 stars_new[count].v[0] = stars_old[count].v[0]+stars_old[count].a[0]*delta;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
337 stars_new[count].v[1] = stars_old[count].v[1]+stars_old[count].a[1]*delta;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
338 stars_new[count].v[2] = stars_old[count].v[2]+stars_old[count].a[2]*delta;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
339 stars_new[count].r[0] = stars_old[count].r[0]+stars_new[count].v[0]*delta/*+stars_old[count].a[0]*delta*delta/2.0*/;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
340 stars_new[count].r[1] = stars_old[count].r[1]+stars_new[count].v[1]*delta/*+stars_old[count].a[1]*delta*delta/2.0*/;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
341 stars_new[count].r[2] = stars_old[count].r[2]+stars_new[count].v[2]*delta/*+stars_old[count].a[2]*delta*delta/2.0*/;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
342
249965d0a68f GL is no finish.
kent
parents:
diff changeset
343 DEBUGlog("x = %e\n", stars_new[count].r[0]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
344 DEBUGlog("y = %e\n", stars_new[count].r[1]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
345 DEBUGlog("z = %e\n", stars_new[count].r[2]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
346 DEBUGlog("vx = %e\n", stars_new[count].v[0]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
347 DEBUGlog("vy = %e\n", stars_new[count].v[1]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
348 DEBUGlog("vz = %e\n", stars_new[count].v[2]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
349 DEBUGlog("a0=%e,a1=%e,a2=%e\n", stars_new[count].a[0], stars_new[count].a[1], stars_new[count].a[2]);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
350
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
351 goto loop(1+count, screen, num);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
352 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
353
249965d0a68f GL is no finish.
kent
parents:
diff changeset
354 /* it is executed after all bodies parameter is computed. */
249965d0a68f GL is no finish.
kent
parents:
diff changeset
355 __code nextTurn(int count, SDL_Surface *screen, int num)
249965d0a68f GL is no finish.
kent
parents:
diff changeset
356 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
357 body *tmp;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
358 tmp = stars_old;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
359 stars_old = stars_new;
249965d0a68f GL is no finish.
kent
parents:
diff changeset
360 stars_new = tmp;
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
361 //SDL_UpdateRect(screen, 0, 0, 0, 0);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
362
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
363 goto drawStars(screen, num);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
364 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
365
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
366
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
367
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
368 /*
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
369 * DRAWING ROUTINs
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
370 *
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
371 |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
372 +----+------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
373 | drawStars |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
374 +----+------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
375 |<--------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
376 +----v-----+ | count++
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
377 | drawStar +---+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
378 +----+-----+ count<num
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
379 | count==num
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
380 +----v----------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
381 | drawStars_out |
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
382 +----+----------+
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
383 | to loop
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
384 */
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
385 __code drawStar(int i, SDL_Surface *screen, int num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
386 __code drawStars_out(SDL_Surface *screen, int num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
387
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
388 __code drawStars(SDL_Surface *screen, int num)
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
389 {
249965d0a68f GL is no finish.
kent
parents:
diff changeset
390 DEBUGlog("draw\n");
249965d0a68f GL is no finish.
kent
parents:
diff changeset
391 glClear( GL_COLOR_BUFFER_BIT );
249965d0a68f GL is no finish.
kent
parents:
diff changeset
392 glColor3d( 1.0, 1.0, 1.0);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
393 glBegin(GL_LINES);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
394 glVertex3d( 0.0, 0.0, 0.0);
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
395 glVertex3d( 200.0, 0.0, 0.0);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
396 glEnd();
249965d0a68f GL is no finish.
kent
parents:
diff changeset
397 glBegin(GL_LINES);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
398 glVertex3d( 0.0, 0.0, 0.0);
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
399 glVertex3d( 0.0, 200.0, 0.0);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
400 glEnd();
249965d0a68f GL is no finish.
kent
parents:
diff changeset
401 glBegin(GL_LINES);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
402 glVertex3d( 0.0, 0.0, 0.0);
2
3e543e31b6eb adjustment main_GL.cbc
kent
parents: 1
diff changeset
403 glVertex3d( 0.0, 0.0, 200.0);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
404 glEnd();
249965d0a68f GL is no finish.
kent
parents:
diff changeset
405
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
406 goto drawStar(0, screen, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
407 }
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
408
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
409 __code drawStars_out(SDL_Surface *screen, int num)
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
410 {
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
411 DEBUGlog("draw axis: screen=%p, num=%d\n", screen, num);
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
412 SDL_GL_SwapBuffers();
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
413 DEBUGlog("go loop\n");
0
249965d0a68f GL is no finish.
kent
parents:
diff changeset
414 goto loop(0, screen, num);
249965d0a68f GL is no finish.
kent
parents:
diff changeset
415 }
249965d0a68f GL is no finish.
kent
parents:
diff changeset
416
3
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
417 __code drawStar(int i, SDL_Surface *screen, int num)
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
418 {
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
419 if (i==num)
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
420 goto drawStars_out(screen, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
421
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
422 DEBUGlog("i=%d, num=%d\n", i, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
423 glPushMatrix();
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
424 glTranslatef( stars_new[i].r[0], stars_new[i].r[1], stars_new[i].r[2]);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
425 gluSphere( sphere[i], 2.0, 32.0, 32.0 );
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
426 glPopMatrix();
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
427
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
428 DEBUGlog("to myself\n");
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
429 goto drawStar(i+1, screen, num);
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
430 }
01290d71ef9c add figures into comment area of main_GL.cbc
kent
parents: 2
diff changeset
431