Borland C Program Einstein:
0 | // (C) 1996 G.J. Smit, Nijmegen, Nederland |
---|---|
1 | // This software is published under the GNU General Public License v3.0 |
2 | // www.dbphysics.org |
3 | // The program 'Einstein' photographs (plots) a piece of einsteinian space time where individual and multiple dimensional basics can be seen, showing the deformation of space time as seen for an outside observer. |
4 | |
5 | #include "conio.h" |
6 | #include "graphics.h" |
7 | #include "math.h" |
8 | #include "process.h" |
9 | #include "stdio.h" |
10 | #include "stdlib.h" |
11 | #include "string.h" |
12 | |
13 | FILE *vkini; // Actieve rekenvariabelen. |
14 | FILE *vkxyz; // Krommingssterkte en virtuele 3D-co�rdinaten. |
15 | FILE *vkfilm; // Film krommingsverloop. |
16 | char fiotest; // Menu +/- controle op bestaande bestanden. |
17 | char prog; // Stuurt programmaverloop. |
18 | float xd[24],yd[24],zd[24]; // Co�rdinaten van maximaal 24 1db's. |
19 | char deel,dtel,ctel; // Actieve hoeveelheid 1db's en teller daarvoor en teller voor invoer coordinaten. |
20 | float bereik,stap; // Formaat en resolutie van berekende ruimte-kubus. |
21 | float kromming,afstand; // Sterkte en spreiding van de zichtbare kromming. |
22 | char ruimte; // Al of niet afbeelden als gekromde ruimte. |
23 | float schaal; // Grootte van afbeelding op scherm. |
24 | char kl_modus; // Kleurenpalette/kleurmodus. |
25 | float dummy,begin,eind; // Waarden voor film. |
26 | float frag; // Voor film krommingsverloop. |
27 | char film; // Bepaalt film aan/uit in tekenfunctie. |
28 | int ftel,fx,fy; // Besturing film. |
29 | unsigned far fk; // Besturing film. |
30 | char toets; // Test op toetsaanslag in menu. |
31 | float x,y,z; // Actieve rekenco�rdinaten. |
32 | float afx,afy,afz,afs,krm; // Berekenen krommingssterkten. |
33 | float xtot,ytot,ztot; // Berekenen visuele co�rdinaten. |
34 | float ktot; // Berekenen totale krommingssterkte per co�rdinaat. |
35 | int v1,v2; // Instellen video-mode. |
36 | float x2,y2; // 2D co�rdinaten voor het beeldscherm. |
37 | float kleur,midx,midy; // Kleur van te tekenen pixel + relocatie. |
38 | float afst,kl_w; // Voor tekenen in kl_modus=2. |
39 | char c_invoer; // Voor invoer co�rdinaten. |
40 | char bnaam[13],tnaam[13]; // Voor variabele bestandsnaam |
41 | |
42 | int huge DetectSvga256() { int vid; vid=4; return vid; } |
43 | |
44 | void kleur_mod(void) |
45 | { v1=0;v2=2341; |
46 | installuserdriver("Svga256",DetectSvga256); |
47 | initgraph(&v1,&v2,""); |
48 | midx=getmaxx()/2;midy=getmaxy()/2; |
49 | if(kl_modus==0) { for(dtel=0;dtel<63;dtel++) setrgbpalette(32+dtel,dtel,dtel,dtel); } |
50 | if(kl_modus==1) |
51 | { for(dtel=0;dtel<64;dtel++) setrgbpalette(128+dtel,63-dtel,dtel,0); |
52 | for(dtel=0;dtel<64;dtel++) setrgbpalette(192+dtel,0,63-dtel,dtel); |
53 | } |
54 | if(kl_modus==2) |
55 | { for(dtel=0;dtel<32;dtel++) setrgbpalette(32+dtel,2*dtel,2*dtel,2*dtel); |
56 | for(dtel=0;dtel<32;dtel++) setrgbpalette(64+dtel,2*dtel,0,0); |
57 | for(dtel=0;dtel<32;dtel++) setrgbpalette(96+dtel,0,2*dtel,0); |
58 | for(dtel=0;dtel<32;dtel++) setrgbpalette(128+dtel,0,0,2*dtel); |
59 | for(dtel=0;dtel<32;dtel++) setrgbpalette(160+dtel,2*dtel,2*dtel,0); |
60 | for(dtel=0;dtel<32;dtel++) setrgbpalette(192+dtel,0,2*dtel,2*dtel); |
61 | for(dtel=0;dtel<32;dtel++) setrgbpalette(224+dtel,2*dtel,0,2*dtel); |
62 | } |
63 | setfillstyle(1,0); |
64 | } |
65 | |
66 | void reken(void) |
67 | { _setcursortype(_NOCURSOR); |
68 | strcpy(tnaam,bnaam); strcat(tnaam,".ini"); |
69 | vkini=fopen(tnaam,"wb"); |
70 | fprintf(vkini,"%d %f %f ",deel,bereik,stap); |
71 | for(dtel=0;dtel |
72 | fclose(vkini); |
73 | |
74 | // Bestand openen voor krommingssterkte en visuele 3D co�rdinaten. |
75 | strcpy(tnaam,bnaam); strcat(tnaam,".xyz"); |
76 | vkxyz=fopen(tnaam,"wb"); |
77 | |
78 | // Berekenen krommingssterkten per co�rdinaat per deeltje in kubus. |
79 | for(x=-bereik;x |
80 | { gotoxy(14,19); printf(": %5.3f procent",x/(2*bereik)*100+50); |
81 | for(y=-bereik;y |
82 | { for(z=-bereik;z |
83 | { ktot=0; xtot=0; ytot=0; ztot=0; |
84 | for(dtel=0;dtel |
85 | { afx=(x-xd[dtel])*(x-xd[dtel]); // Afstand per x,y,z as. |
86 | afy=(y-yd[dtel])*(y-yd[dtel]); |
87 | afz=(z-zd[dtel])*(z-zd[dtel]); |
88 | afs=sqrt(afx+afy+afz); // Afstand co�rdinaat tot deeltje. |
89 | if(afs!=0) krm=1/(afs*afs); else krm=1000000; // Krommingssterkte bepalen. |
90 | // Bepalen co�rdinaten voor representatie van visuele ruimte door krommingssterkte. |
91 | ktot+=krm; |
92 | xtot+=(x-xd[dtel])/krm; |
93 | ytot+=(y-yd[dtel])/krm; |
94 | ztot+=(z-zd[dtel])/krm; |
95 | } |
96 | fprintf(vkxyz,"%f %f %f %f ",ktot,xtot,ytot,ztot); |
97 | } |
98 | } |
99 | if(kbhit()!=0) |
100 | { if(getch()==27) x=bereik; |
101 | } |
102 | } |
103 | fclose(vkxyz); |
104 | if(fiotest==0||fiotest==1) fiotest=1; else fiotest=3; |
105 | if(toets==27) |
106 | { unlink(tnaam); |
107 | if(fiotest==3) fiotest=2; else fiotest=0; |
108 | } |
109 | toets=32; |
110 | } |
111 | |
112 | void teken(void) |
113 | { if(film==0) |
114 | { strcpy(tnaam,bnaam); strcat(tnaam,".ini"); |
115 | vkini=fopen(tnaam,"rb"); |
116 | fscanf(vkini,"%d%f%f",&deel,&bereik,&stap); |
117 | for(dtel=0;dtel |
118 | fclose(vkini); |
119 | printf("Deel:%d Bereik:%f Stap:%f Kromming:%f Afstand:%f Ruimte:%d Kleur:%d Schaal:%f", |
120 | deel,bereik,stap,kromming,afstand,ruimte,kl_modus,schaal); |
121 | } |
122 | else |
123 | { bar(0,0,1023,767); |
124 | gotoxy(1,1); |
125 | printf("FC : Begin:%f Eind:%f Fragment:%f Kromming:%f Afstand:%f Ruimte:%d Kleur:%d Schaal:%f", |
126 | begin,eind,frag,kromming,afstand,ruimte,kl_modus,schaal); |
127 | } |
128 | |
129 | setcolor(7);line(0,18,1023,18);setcolor(10); |
130 | strcpy(tnaam,bnaam); strcat(tnaam,".xyz"); |
131 | vkxyz=fopen(tnaam,"rb"); |
132 | |
133 | for(x=-bereik;x |
134 | { line((x/(2*bereik)*100+50)*10.24,18,((x+stap)/(2*bereik)*100+50)*10.24,18); |
135 | for(y=-bereik;y |
136 | { for(z=-bereik;z |
137 | { fscanf(vkxyz,"%f %f %f %f",&ktot,&xtot,&ytot,&ztot); |
138 | if(ktot>kromming-afstand&&ktot |
139 | { if(ruimte==0) { xtot=x; ytot=y; ztot=z; } |
140 | x2=(ytot-.5*xtot)*schaal; |
141 | y2=(ztot-.5*xtot)*schaal; |
142 | if(kl_modus==0) kleur=(x+bereik)/(2*bereik)*62+1; |
143 | if(kl_modus==1) |
144 | { if(ktot>kromming&&ktot<(kromming+afstand)) kleur=160+64*(ktot-kromming)/afstand; |
145 | else kleur=160+64*(ktot-kromming)/afstand; |
146 | } |
147 | if(kl_modus==2) |
148 | { afst=1000000; |
149 | kl_w=32; |
150 | for(dtel=0;dtel |
151 | { afx=(x-xd[dtel])*(x-xd[dtel]); |
152 | afy=(y-yd[dtel])*(y-yd[dtel]); |
153 | afz=(z-zd[dtel])*(z-zd[dtel]); |
154 | afs=sqrt(afx+afy+afz); |
155 | if(afst>afs) |
156 | { afst=afs; |
157 | kl_w=32*dtel; |
158 | } |
159 | } |
160 | kleur=(x+bereik)/(2*bereik)*30+1+kl_w; |
161 | } |
162 | putpixel(midx+x2,midy-y2,32+kleur); |
163 | } |
164 | if(kbhit()!=0) |
165 | { if(getch()==27) |
166 | { if(ruimte==0) |
167 | printf("\n\nOnderbroken k:%f x:%f y:%f z:%f x2:%f y2:%f",ktot,x,y,z,x2,y2); |
168 | else |
169 | printf("\n\nOnderbroken k:%f x:%f y:%f z:%f x2:%f y2:%f",ktot,xtot,ytot,ztot,x2,y2); |
170 | x=bereik; y=bereik; z=bereik; |
171 | if(film!=0) // Als film cre�ren dan einde beeld-lus. |
172 | { kromming=eind; |
173 | film=0; |
174 | } |
175 | } |
176 | } |
177 | } |
178 | } |
179 | } |
180 | fclose(vkxyz); |
181 | if(film==0) |
182 | { getch(); |
183 | toets=32; |
184 | } |
185 | else |
186 | { for(fy=19;fy<768;fy++) |
187 | { for(fx=0;fx<1024;fx++) |
188 | { fk=getpixel(fx,fy); |
189 | if(fk!=0) fprintf(vkfilm,"%d %d %u ",fx,fy,fk); |
190 | } |
191 | } |
192 | } |
193 | } |
194 | |
195 | void animatie(void) |
196 | { putchar(13); |
197 | printf("KF : Begin:%f Eind:%f Fragment:%f Ruimte:%d Kleur:%d Schaal:%f", |
198 | begin,eind,frag,ruimte,kl_modus,schaal); |
199 | |
200 | vkfilm=fopen("vkfilm.xyz","rb"); |
201 | |
202 | do |
203 | { fscanf(vkfilm,"%d",&ftel); |
204 | if(ftel<0) |
205 | { if(ftel!=-1) |
206 | { if(ftel==-1000) printf(" Laatste beeld"); |
207 | toets=getch(); |
208 | if(toets!=27) bar(0,19,1023,767); |
209 | else toets=32; |
210 | } |
211 | fscanf(vkfilm,"%d",&fx); |
212 | } |
213 | else fx=ftel; |
214 | fscanf(vkfilm,"%d",&fy); |
215 | fscanf(vkfilm,"%u",&fk); |
216 | putpixel(fx,fy,fk); |
217 | } while(ftel>-999); |
218 | fclose(vkfilm); |
219 | } |
220 | |
221 | void cord_in(void) // Nu 24 deeltjes in te voeren |
222 | { |
223 | for(dtel=0;dtel |
224 | { clrscr(); |
225 | printf("Bestandsnaa[m] : %s\n\n",bnaam); |
226 | printf("[T]ekenen "); |
227 | if(fiotest==1||fiotest==3) printf("+"); else printf("-"); |
228 | printf(" [R]ekenen\n"); |
229 | printf("[F]ilm "); |
230 | if(fiotest==2||fiotest==3) printf("+"); else printf("-"); |
231 | printf(" [C]re�ren\n"); |
232 | printf("[w]illekeur [i]nvoeren\n"); |
233 | printf("[d]eel : %d\n",deel); |
234 | printf("[b]ereik : %f\n",bereik); |
235 | printf("[s]tap : %f\n",stap); |
236 | printf("[k]romming : %f\n",kromming); |
237 | printf("[a]fstand : %f\n",afstand); |
238 | printf("[r]uimte : "); |
239 | if(ruimte==0) printf("lineair\n"); else printf("gekromd\n"); |
240 | printf("s[c]haal : %f\n",schaal); |
241 | printf("k[l]eur : "); |
242 | if(kl_modus==0) printf("3D grijswaarden\n"); |
243 | if(kl_modus==1) printf("2D krommingssterkte\n"); |
244 | if(kl_modus==2) printf("3D per deeltje\n"); |
245 | printf("b[e]gin : %f\n",begin); |
246 | printf("ei[n]d : %f\n",eind); |
247 | printf("[f]ragment : %f\n",frag); |
248 | |
249 | for(ctel=0;ctel |
250 | { gotoxy(38,1+ctel); |
251 | printf("%d : %f %f %f",ctel,xd[ctel],yd[ctel],zd[ctel]); |
252 | } |
253 | |
254 | gotoxy(1,19); printf("Deel : %d\n",dtel); |
255 | printf("x > "); scanf("%f",&xd[dtel]); |
256 | printf("y > "); scanf("%f",&yd[dtel]); |
257 | printf("z > "); scanf("%f",&zd[dtel]); |
258 | } |
259 | toets=32; |
260 | } |
261 | |
262 | void main(void) |
263 | { // Bepalen van beginwaarden voor actieve rekenvariabelen. |
264 | strcpy(bnaam,"vkveld"); |
265 | strcpy(tnaam,bnaam); strcat(tnaam,".ini"); |
266 | vkini=fopen(tnaam,"rb"); |
267 | if(vkini==NULL) |
268 | { fiotest=0; |
269 | deel=7; bereik=10; stap=.25; |
270 | for(dtel=0;dtel |
271 | { xd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
272 | yd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
273 | zd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
274 | } |
275 | } |
276 | else |
277 | { fiotest=1; |
278 | fscanf(vkini,"%d%f%f",&deel,&bereik,&stap); |
279 | for(dtel=0;dtel |
280 | { fscanf(vkini,"%f%f%f",&xd[dtel],&yd[dtel],&zd[dtel]); |
281 | } |
282 | } |
283 | fclose(vkini); |
284 | |
285 | // Testen of vkveld.xyz bestaat. |
286 | strcpy(tnaam,bnaam); strcat(tnaam,".xyz"); |
287 | vkxyz=fopen(tnaam,"rb"); |
288 | if(vkxyz==NULL) fiotest=0; |
289 | fclose(vkxyz); |
290 | |
291 | // Bepalen van beginwaarden voor actieve tekenvariabelen. |
292 | kromming=1; afstand=.25; schaal=10; ruimte=0; kl_modus=0; |
293 | |
294 | // Bepalen van beginwaarden voor actieve filmvariabelen. |
295 | vkini=fopen("vkfilm.ini","rb"); |
296 | if(vkini==NULL) |
297 | { begin=.5; eind=1.5; frag=.25; |
298 | } |
299 | else |
300 | { if(fiotest==0) fiotest=2; else fiotest=3; |
301 | fscanf(vkini,"%f%f%f%d",&begin,&eind,&frag,&kl_modus); |
302 | } |
303 | fclose(vkini); |
304 | |
305 | // Testen of vkfilm.xyz bestaat. |
306 | vkfilm=fopen("vkfilm.xyz","rb"); |
307 | if(vkfilm==NULL) { if(fiotest==1||fiotest==3) fiotest=1; else fiotest=0; } |
308 | fclose(vkfilm); |
309 | |
310 | // Menu -> begin programma-lus. |
311 | prog=1; do |
312 | { // Menu op het scherm. |
313 | _setcursortype(_NOCURSOR); |
314 | clrscr(); |
315 | printf("Bestandsnaa[m] : %s\n\n",bnaam); |
316 | printf("[T]ekenen "); |
317 | if(fiotest==1||fiotest==3) printf("+"); else printf("-"); |
318 | printf(" [R]ekenen\n"); |
319 | printf("[F]ilm "); |
320 | if(fiotest==2||fiotest==3) printf("+"); else printf("-"); |
321 | printf(" [C]re�ren\n"); |
322 | printf("[w]illekeur [i]nvoeren\n"); |
323 | printf("[d]eel : %d\n",deel); |
324 | printf("[b]ereik : %f\n",bereik); |
325 | printf("[s]tap : %f\n",stap); |
326 | printf("[k]romming : %f\n",kromming); |
327 | printf("[a]fstand : %f\n",afstand); |
328 | printf("[r]uimte : "); |
329 | if(ruimte==0) printf("lineair\n"); else printf("gekromd\n"); |
330 | printf("s[c]haal : %f\n",schaal); |
331 | printf("k[l]eur : "); |
332 | if(kl_modus==0) printf("3D grijswaarden\n"); |
333 | if(kl_modus==1) printf("2D krommingssterkte\n"); |
334 | if(kl_modus==2) printf("3D per deeltje\n"); |
335 | printf("b[e]gin : %f\n",begin); |
336 | printf("ei[n]d : %f\n",eind); |
337 | printf("[f]ragment : %f\n",frag); |
338 | |
339 | // Bestandsnaam afdrukken |
340 | |
341 | |
342 | // Co�rdinaten op het scherm. |
343 | for(dtel=0;dtel |
344 | { gotoxy(38,1+dtel); |
345 | printf("%d : %f %f %f",dtel,xd[dtel],yd[dtel],zd[dtel]); |
346 | } |
347 | |
348 | // Keuze voor functie en afhandeling daarvan. |
349 | toets=getch(); gotoxy(1,19); _setcursortype(_NORMALCURSOR); |
350 | if(toets==27) prog=0; |
351 | if(toets==100) |
352 | { printf("Aantal 1db's ? "); scanf("%d",&deel); |
353 | if(deel<1) deel=1; if(deel>24) deel=24; |
354 | if(kl_modus==2) kl_modus=0; |
355 | } |
356 | if(toets==98) |
357 | { printf("Maximale co�rdinaten ? "); scanf("%f",&bereik); |
358 | if(bereik==0) bereik=10; if(bereik<0) bereik=-bereik; |
359 | } |
360 | if(toets==115) |
361 | { gotoxy(1,19); printf("Resolutie ? "); scanf("%f",&stap); |
362 | if(stap==0) stap=.25; if(stap<0) stap=-stap; |
363 | } |
364 | if(toets==119) |
365 | { for(dtel=0;dtel |
366 | { xd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
367 | yd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
368 | zd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
369 | } |
370 | } |
371 | if(toets==105) cord_in(); |
372 | if(toets==107) |
373 | { printf("Zichtbare kromming ? "); scanf("%f",&kromming); |
374 | if(kromming==0) kromming=1; if(kromming<0) kromming=-kromming; |
375 | } |
376 | if(toets==97) |
377 | { printf("Afstand tot zichtbare kromming ? "); scanf("%f",&afstand); |
378 | if(afstand==0) afstand=.25; if(afstand<0) afstand=-afstand; |
379 | } |
380 | if(toets==114) |
381 | { if(ruimte==0) ruimte=1; else ruimte=0; |
382 | } |
383 | if(toets==99) |
384 | { printf("Grootte (op 1024x768) ? "); scanf("%f",&schaal); |
385 | if(schaal==0) schaal=10; if(schaal<0) schaal=-schaal; |
386 | } |
387 | if(toets==108) |
388 | { if(kl_modus==0) kl_modus=1; |
389 | else |
390 | { if(kl_modus==1) |
391 | { if(deel<8) kl_modus=2; else kl_modus=0; } |
392 | else |
393 | { if(kl_modus==2) kl_modus=0; } |
394 | } |
395 | } |
396 | if(toets==101) |
397 | { printf("Beginkromming ? "); scanf("%f",&begin); |
398 | if(begin<0) begin=-begin; |
399 | } |
400 | if(toets==110) |
401 | { printf("Eindkromming ? "); scanf("%f",&eind); |
402 | if(eind<0) eind=-eind; |
403 | } |
404 | if(toets==102) |
405 | { printf("Fragmentatie ? "); scanf("%f",&frag); |
406 | } |
407 | |
408 | if(toets==109) |
409 | { printf("Nieuwe bestandsnaam ? "); scanf("%s",&bnaam); |
410 | |
411 | // Testen of bnaam.ini bestaat. |
412 | strcpy(tnaam,bnaam); strcat(tnaam,".ini"); |
413 | vkini=fopen(tnaam,"rb"); |
414 | if(vkini==NULL) |
415 | { fiotest=0; |
416 | // deel=7; bereik=10; stap=.25; |
417 | // for(dtel=0;dtel |
418 | // { xd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
419 | // yd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
420 | // zd[dtel]=((random(32767)*bereik)/32767-bereik/2)*2; |
421 | // } |
422 | } |
423 | else |
424 | { fiotest=1; |
425 | fscanf(vkini,"%d%f%f",&deel,&bereik,&stap); |
426 | for(dtel=0;dtel |
427 | { fscanf(vkini,"%f%f%f",&xd[dtel],&yd[dtel],&zd[dtel]); |
428 | } |
429 | } |
430 | fclose(vkini); |
431 | |
432 | // Testen of bnaam.xyz bestaat. |
433 | strcpy(tnaam,bnaam); strcat(tnaam,".xyz"); |
434 | vkxyz=fopen(tnaam,"rb"); |
435 | if(vkxyz==NULL) fiotest=0; |
436 | fclose(vkxyz); |
437 | } |
438 | if(toets==82) |
439 | { if(fiotest==1||fiotest==3) |
440 | { printf("Bestand overschrijven (j/n) ? "); |
441 | toets=getch(); |
442 | if(toets==106) |
443 | { putchar(13); printf(" "); |
444 | putchar(13); printf("Rekenen"); |
445 | reken(); toets=32; |
446 | } |
447 | } |
448 | else |
449 | { putchar(13); printf("Rekenen"); |
450 | reken(); |
451 | } |
452 | } |
453 | if(toets==84) |
454 | { if(fiotest==0||fiotest==2) |
455 | { printf("Bestand bestaat niet ! "); getch(); |
456 | } |
457 | else |
458 | { film=0; |
459 | kleur_mod(); |
460 | teken(); |
461 | closegraph(); |
462 | } |
463 | } |
464 | if(toets==67) // Film cre�ren. |
465 | { if(fiotest==3) // Test of vkfilm.xyz bestaat. |
466 | { printf("Bestand overschrijven (j/n) ? "); |
467 | toets=getch(); |
468 | if(toets==106) fiotest=1; |
469 | } |
470 | if(fiotest==1) |
471 | { // Kijk naar variabelen voor bereik & stap. |
472 | vkini=fopen("vkveld.ini","rb"); |
473 | fscanf(vkini,"%d%f%f",&deel,&bereik,&stap); |
474 | for(dtel=0;dtel |
475 | { fscanf(vkini,"%f%f%f",&xd[dtel],&yd[dtel],&zd[dtel]); |
476 | } |
477 | fclose(vkini); |
478 | |
479 | // Begin beeld-lus. |
480 | kleur_mod(); |
481 | vkini=fopen("vkfilm.ini","wb"); |
482 | fprintf(vkini,"%f %f %f %d",begin,eind,frag,kl_modus); |
483 | fclose(vkini); |
484 | vkfilm=fopen("vkfilm.xyz","wb"); |
485 | film=1; ftel=1; |
486 | for(kromming=begin;kromming |
487 | { fprintf(vkfilm,"-%d ",ftel); |
488 | teken(); |
489 | ftel++; |
490 | } |
491 | fprintf(vkfilm,"-1000"); |
492 | fclose(vkfilm); |
493 | fiotest=3; |
494 | if(film==0) |
495 | { fiotest=1; |
496 | unlink("vkfilm.xyz"); |
497 | } |
498 | closegraph(); |
499 | } |
500 | if(fiotest==0||fiotest==2) |
501 | { printf("Bestand bestaat niet ! "); getch(); |
502 | } |
503 | toets=32; |
504 | } |
505 | if(toets==70) |
506 | { if(fiotest==3) |
507 | { vkini=fopen("vkveld.ini","rb"); |
508 | fscanf(vkini,"%d%f%f",&deel,&bereik,&stap); |
509 | for(dtel=0;dtel |
510 | { fscanf(vkini,"%f%f%f",&xd[dtel],&yd[dtel],&zd[dtel]); |
511 | } |
512 | fclose(vkini); |
513 | kleur_mod(); |
514 | animatie(); |
515 | closegraph(); |
516 | } |
517 | if(fiotest==2) |
518 | { kleur_mod(); |
519 | animatie(); |
520 | closegraph(); |
521 | } |
522 | if(fiotest<2) |
523 | { printf("Bestand bestaat niet ! "); getch(); |
524 | } |
525 | toets=32; |
526 | } |
527 | if(toets==63) |
528 | { for(dtel=1;dtel<15;dtel++) |
529 | { gotoxy(1,dtel); printf(" "); |
530 | } |
531 | clrscr(); |
532 | printf("( 04-96, Nijmegen -> G.J.Smit Geb:08-01-68, Veendam )\n"); |
533 | printf(" De theorie in hoeverre het betrekking heeft op dit programma. Dit pro-\n"); |
534 | printf("gramma geeft een stilstaande foto van een aantal 1db's in een bepaalde ruimte,\n"); |
535 | printf("op een bepaalde afstand van elkaar. Er is geen beweging, alleen hun onderlinge\n"); |
536 | printf("positie. Dit programma berekend een kubus ruimte met een bepaalde grootte met\n"); |
537 | printf("als middelpunt x,y,z-co�rdinaat (0,0,0). De 1db's hebben een bepaalde locatie\n"); |
538 | printf("met elk zijn specifieke co�rdinaten in die kubus. Op het punt waar de 1db zich\n"); |
539 | printf("bevindt is de ruimte oneindig sterk gekromd (de 1db �s de gekromde ruimte!).\n"); |
540 | printf("Op een bepaalde afstand van een 1db is de ruimte de in die mate gekromd als\n"); |
541 | printf("bepaalt door 1/afstand (of waarschijnlijker 1/afstand^2 zoals wij dat waar-\n"); |
542 | printf("nemen bij o.a. de zwaartekracht) (en logisch met een 3-dimensionaal heelal\n"); |
543 | printf("gezien de 'localiteit' van energie (energie=mate van kromming t.o.v. omgeving)?\n"); |
544 | printf("Een 1db is net als alle omliggende ruimte, alleen is in dat punt de ruimte ten\n"); |
545 | printf("opzichte van de omgeving een factor oneindig sterker gekromd. Het is allemaal\n"); |
546 | printf("puur relatief. Want ook al is de omliggende ruimte op een bepaalde afstand\n"); |
547 | printf("bijvoorbeeld de helft van de 1db kromming, dan is die ruimte daar ook oneindig\n"); |
548 | printf("gekromd (0.5*�=�). Er is dus alleen sprake van een relatief sterkere kromming,\n"); |
549 | printf("slechts absoluut, en eindig in verhouding tot andere 1db's. Dat wil zeggen;\n"); |
550 | printf("meetbare parameters zijn onderlinge afstand en onderlinge snelheid. Ze zijn\n"); |
551 | printf("allen oneindig, doch meetbaar eindig in verhouding tot elkaar Met welke\n"); |
552 | printf("snelheid naderen ze elkaar en welke afstand hebben ze tot elkaar? In principe\n"); |
553 | printf("meetbaar, in elk geval berekenbaar. "); |
554 | getch(); clrscr(); |
555 | printf("Technische opmerkingen:\n\n"); |
556 | printf("Bereik: Kleiner dan .01 en groter dan 100 levert onbetrouwbare resultaten op.\n"); |
557 | printf(" Dit door het maximum bereik van 'float-type' variabelen.\n\n"); |
558 | printf("Schaal: De schaal is alleen re�el in lineaire-ruimte afbeelding. In gekromde-\n"); |
559 | printf(" ruimte afbeelding is de grootte het resultaat van een algoritme dat\n"); |
560 | printf(" bepaalt in hoeverre de kromming van de 1db's de in 3D berekende kubus\n"); |
561 | printf(" van vlakke ruimte vervormd. "); |
562 | |
563 | getch(); |
564 | } |
565 | } while (prog>0); |
566 | } |
567 |