DB Universe Arithmeticam


This software is published under the GNU General Public License v3.0.




      
Internal movement of a quark.
The theory of the dimensional basic is represented by computer algorithms which are mathematical algebra. Two Borland C programs have been written.

The program 'Newton' is a n-body model where simultaneously for the positions of multiple dimensional basics (theoretical infinite curvature) moving through space time interact with each other according to newtonian laws. 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.


Download code (TXT):
dbmove.bas newton.cpp einstein.cpp


Show code:
Program Newton Program Einstein
Borland C Program Newton:

0#include "stdio.h"
1#include "stdlib.h"
2#include "conio.h"
3#include "string.h"
4#include "float.h"
5#include "math.h"
6#include "graphics.h"
7#include "svga256.h"
8
9FILE *bestand; // Pointer voor geopend bestand.
10char b_naam[12]; // Naam van actief bestand.
11char b_test; // Controle voor bestaan bestand.
12char toets; // Variabele voor ingedrukte toets.
13int t1,t2,t3,t4; // Tellers voor lussen.
14int stap,dim,deel; // Aantal stappen, dimensies en deeltjes.
15int spoor; // Lengte afbeelding in tijd per deeltje.
16int prog; // Programma einde.
17int i_temp; // Tijdelijk opslag integer.
18int midd; // Middelpunt in tekening aan/uit.
19int modus; // Kleur per deel/diepte.
20float w_g, w_x, w_y; // Windowgrootte, x en y cordinaatgrootte.
21float x_max, y_max; // Aantal pixels op beeldscherm.
22float t_frag, grens; // Tijdfragmentatie en grenswaarde ruimte.
23float r_o, r_n; // Bereik willekeurige begincordinaten.
24float fzx, fzy, fzz; // Zwaartekracht per as.
25float g_temp; // Grenswaarde wisseling.
26float f_temp; // Tijdelijk opslag float.
27float midx, midy; // Middelpunt berekening-variabelen.
28float diepte; // Kleur-diepte variabele.
29float huge x3[1851][4]; // Maximaal 250 x3d-cordinaten.
30float huge y3[1851][4]; // Maximaal 250 y3d-cordinaten.
31float huge z3[1851][4]; // Maximaal 250 z3d-cordinaten.
32float huge x2[1851][30]; // Maximaal 30 x2d-cordinaten per deeltje.
33float huge y2[1851][30]; // Maximaal 30 y2d-cordinaten per deeltje.
34
35int huge DetectSvga256(){ int Vid; Vid=4; return Vid; }
36
37void theorie(void) // Rekenkundig variabele verhoudingen.
38{ t1=0; t2=2639;
39 installuserdriver("Svga256",DetectSvga256);
40 initgraph(&t1,&t2,"");
41 setcolor(7);
42 for(t1=0; t1<20; t1++)
43 { line(x_max/2+200-t1*10, y_max/2, x_max/2, y_max/2+t1*10);
44 line(x_max/2-t1*10, y_max/2, x_max/2, y_max/2+200-t1*10);
45 line(x_max/2-200+t1*10, y_max/2, x_max/2, y_max/2-t1*10);
46 line(x_max/2+t1*10, y_max/2, x_max/2, y_max/2-200+t1*10);
47 }
48 getch();
49 closegraph();
50}
51
52void varbestand(void) // Variabele waarden bestand inlezen.
53{ bestand=fopen(b_naam,"r");
54 if(bestand==NULL) b_test=0;
55 else
56 { fscanf(bestand, "%d%d%f%f%f%f", &stap, &deel, &r_o, &r_n, &t_frag, &grens);
57 if(grens!=0) w_g=1.5*grens;
58 b_test=1;
59 }
60 fclose(bestand);
61}
62
63void menuopbeeld(void)
64{ clrscr();
65 textcolor(10);
66 printf("[b]estandsnaam ");
67 if(b_test==0) printf("-"); else printf("+");
68 printf(" : %s\n\n", b_naam);
69 printf("[c]ordinaten\n");
70 printf("[w]illekeur : %f\n", r_o);
71 printf("[r]ichting : %f\n\n", r_n);
72 printf("[t]ijdfragmentatie : %f\n", t_frag);
73 printf("[g]rens : %f\n\n", grens);
74 printf("[s]tappen : %d\n", stap);
75 printf("[d]eel : %d\n\n", deel);
76 printf("[v]enster : %f\n", w_g);
77 printf("[p]rojectie : %d\n", spoor);
78 printf("M goedmaken voor 3d: ");
79//printf("[m]iddelpunt : ");
80 if(midd==0) printf("uit\n"); else printf("aan\n");
81 printf("[k]leurmodus : ");
82 if(modus==0) printf("deel\n\n\n"); else printf("diepte\n\n\n");
83 printf("[R]ekenen [E]n [T]ekenen [S]toppen\n\n");
84}
85
86void menuvraag(void)
87{ toets=getch();
88 if(toets==98) { printf("Nieuwe bestandsnaam? ");
89 scanf("%s", &b_naam); }
90 if(toets==99) { printf("Invoer cordinaten, nog programmeren...");
91 getch(); }
92 if(toets==119) { f_temp=r_o; printf("Maximale willekeur? ");
93 scanf("%f", &r_o);
94 if(r_o<0||r_o==0||r_o>30000) r_o=f_temp; }
95 if(toets==114) { f_temp=r_n; printf("Maximale richting? ");
96 scanf("%f", &r_n);
97 if(r_n<0||r_o==0||r_o>2500) r_o=f_temp; }
98 if(toets==116) { f_temp=t_frag; printf("Nieuwe tijdfragmentatie? ");
99 scanf("%f", &t_frag);
100 if(t_frag<0||t_frag==0||t_frag>1) t_frag=f_temp; }
101 if(toets==103) { f_temp=grens; printf("Grens van ruimte? ");
102 scanf("%f", &grens);
103 if(grens<0||grens>32500) grens=f_temp; }
104 if(toets==115) { i_temp=stap; printf("Aantal stappen? ");
105 scanf("%d", &stap);
106 if(stap<1||stap>32500) stap=i_temp; }
107 if(toets==100) { i_temp=deel; printf("Aantal deeltjes? ");
108 scanf("%d", &deel);
109 if(deel<2||deel>1850) deel=i_temp; }
110 if(toets==118) { f_temp=w_g; printf("Venstergrootte? ");
111 scanf("%f", &w_g);
112 if(w_g<0||w_g==0||w_g>32500) w_g=f_temp; }
113 if(toets==112) { i_temp=spoor; printf("Aantal fragmenten? ");
114 scanf("%d", &spoor);
115 if(spoor<0||spoor>30) spoor=i_temp; }
116 if(toets==109) { if(midd==0) midd=1; else midd=0; }
117 if(toets==107) { if(modus==0) modus=1; else modus=0; }
118}
119
120void willekeur(void)
121{ for(t1=0;t1
122 { x3[t1][0]=2*(random(32767)*r_o/32767)-r_o;
123 y3[t1][0]=2*(random(32767)*r_o/32767)-r_o;
124 z3[t1][0]=2*(random(32767)*r_o/32767)-r_o;
125 x3[t1][1]=x3[t1][0]+2*(random(32767)*r_n/32767)-r_n;
126 y3[t1][1]=y3[t1][0]+2*(random(32767)*r_n/32767)-r_n;
127 z3[t1][1]=z3[t1][0]+2*(random(32767)*r_n/32767)-r_n;
128 }
129}
130
131void reken(void) // Kaal [R]ekenen, snelste routine.
132{ // Bestand voor cordinaten openen.
133 bestand=fopen(b_naam,"w");
134 fprintf(bestand, "%d %d %f %f %f %f", stap, deel, r_o, r_n, t_frag, grens);
135 for(t1=0;t1
136 fprintf(bestand, " %f %f %f", x3[t1][1], y3[t1][1], z3[t1][1]);
137
138 // Cordinaten berekenen, schrijven naar disk en naar tekst-beeldscherm.
139 for(t1=0;t1
140 { for(t2=0;t2
141 { x3[t2][3]=0;
142 y3[t2][3]=0;
143 z3[t2][3]=0;
144 }
145 for(t2=0;t2
146 { x3[t2][2]=x3[t2][1]-x3[t2][0];
147 y3[t2][2]=y3[t2][1]-y3[t2][0];
148 z3[t2][2]=z3[t2][1]-z3[t2][0];
149 for(t3=t2;t3
150 { fzx=x3[t3][1]-x3[t2][1];
151 fzy=y3[t3][1]-y3[t2][1];
152 fzz=z3[t3][1]-z3[t2][1];
153 if(fzx!=0) { fzx=1/fzx; x3[t2][3]=x3[t2][3]+fzx;
154 x3[t3][3]=x3[t3][3]-fzx; }
155 if(fzy!=0) { fzy=1/fzy; y3[t2][3]=y3[t2][3]+fzy;
156 y3[t3][3]=y3[t3][3]-fzy; }
157 if(fzz!=0) { fzz=1/fzz; z3[t2][3]=z3[t2][3]+fzz;
158 z3[t3][3]=z3[t3][3]-fzz; }
159 }
160 x3[t2][0]=x3[t2][1];
161 y3[t2][0]=y3[t2][1];
162 z3[t2][0]=z3[t2][1];
163 x3[t2][1]=x3[t2][0]+x3[t2][2]+x3[t2][3];
164 y3[t2][1]=y3[t2][0]+y3[t2][2]+y3[t2][3];
165 z3[t2][1]=z3[t2][0]+z3[t2][2]+z3[t2][3];
166 }
167 for(t2=0;t2
168 fprintf(bestand, " %f %f %f", x3[t2][1], y3[t2][1], z3[t2][1]);
169 putchar(13); printf("%d",t1+1);
170 }
171 fclose(bestand);
172 b_test=1;
173}
174
175void rekenmetopties(void) // [R]ekenen met grens en/of t_frag aan.
176{ // Bestand voor cordinaten openen.
177 bestand=fopen(b_naam,"w");
178 fprintf(bestand, "%d %d %f %f %f %f", stap, deel, r_o, r_n, t_frag, grens);
179 for(t1=0;t1
180 fprintf(bestand, " %f %f %f", x3[t1][1], y3[t1][1], z3[t1][1]);
181
182 // Cordinaten berekenen, schrijven naar disk en naar tekst-beeldscherm.
183 for(t1=0;t1
184 { for(t2=0;t2
185 { x3[t2][3]=0;
186 y3[t2][3]=0;
187 z3[t2][3]=0;
188 }
189 for(t2=0;t2
190 { x3[t2][2]=x3[t2][1]-x3[t2][0];
191 y3[t2][2]=y3[t2][1]-y3[t2][0];
192 z3[t2][2]=z3[t2][1]-z3[t2][0];
193 for(t3=t2;t3
194 { fzx=x3[t3][1]-x3[t2][1];
195 fzy=y3[t3][1]-y3[t2][1];
196 fzz=z3[t3][1]-z3[t2][1];
197 if(fzx!=0) { fzx=1/fzx; x3[t2][3]=x3[t2][3]+fzx;
198 x3[t3][3]=x3[t3][3]-fzx; }
199 if(fzy!=0) { fzy=1/fzy; y3[t2][3]=y3[t2][3]+fzy;
200 y3[t3][3]=y3[t3][3]-fzy; }
201 if(fzz!=0) { fzz=1/fzz; z3[t2][3]=z3[t2][3]+fzz;
202 z3[t3][3]=z3[t3][3]-fzz; }
203 }
204 // Bewerk cordinaten als t_frag ongelijk aan 1.
205 if(t_frag!=1)
206 { x3[t2][2]=x3[t2][2]*t_frag; x3[t2][3]=x3[t2][3]*t_frag;
207 y3[t2][2]=y3[t2][2]*t_frag; y3[t2][3]=y3[t2][3]*t_frag;
208 z3[t2][2]=z3[t2][2]*t_frag; z3[t2][3]=z3[t2][3]*t_frag;
209 }
210 // Bepaal de nieuwe cordinaten.
211 x3[t2][0]=x3[t2][1];
212 y3[t2][0]=y3[t2][1];
213 z3[t2][0]=z3[t2][1];
214 x3[t2][1]=x3[t2][0]+x3[t2][2]+x3[t2][3];
215 y3[t2][1]=y3[t2][0]+y3[t2][2]+y3[t2][3];
216 z3[t2][1]=z3[t2][0]+z3[t2][2]+z3[t2][3];
217 // Test grensoverschrijding.
218 if(grens>0)
219 { if(x3[t2][1]<-grens||x3[t2][1]>grens)
220 { g_temp=x3[t2][1]; x3[t2][1]=-x3[t2][0]; x3[t2][0]=-g_temp; }
221 if(y3[t2][1]<-grens||y3[t2][1]>grens)
222 { g_temp=y3[t2][1]; y3[t2][1]=-y3[t2][0]; y3[t2][0]=-g_temp; }
223 if(z3[t2][1]<-grens||z3[t2][1]>grens)
224 { g_temp=z3[t2][1]; z3[t2][1]=-z3[t2][0]; z3[t2][0]=-g_temp; }
225 }
226 }
227 for(t2=0;t2
228 fprintf(bestand, " %f %f %f", x3[t2][1], y3[t2][1], z3[t2][1]);
229 putchar(13); printf("%d",t1+1);
230 }
231 fclose(bestand);
232 b_test=1;
233}
234
235void rekenenteken(void) // [E]n.
236{ t1=0; t2=2639;
237 installuserdriver("Svga256",DetectSvga256);
238 initgraph(&t1,&t2,"");
239 w_x=(x_max+1)/(w_g*2); w_y=(y_max+1)/(w_g*2);
240 printf(" |%d|%d|%f|%f|%f|%f|%f|%d|%s",
241 stap, deel, r_o, r_n, t_frag, grens, w_g, spoor, b_naam);
242 gotoxy(0,0);
243 midd=0; spoor=0; modus=0;
244
245 // Bestand voor cordinaten openen.
246 bestand=fopen(b_naam,"w");
247 fprintf(bestand, "%d %d %f %f %f %f", stap, deel, r_o, r_n, t_frag, grens);
248 for(t1=0;t1
249 fprintf(bestand, " %f %f %f", x3[t1][1], y3[t1][1], z3[t1][1]);
250
251 // Cordinaten berekenen, schrijven naar disk en naar grafisch beeldscherm.
252 for(t1=0;t1
253 { for(t2=0;t2
254 { x3[t2][3]=0;
255 y3[t2][3]=0;
256 z3[t2][3]=0;
257 }
258 for(t2=0;t2
259 { x3[t2][2]=x3[t2][1]-x3[t2][0];
260 y3[t2][2]=y3[t2][1]-y3[t2][0];
261 z3[t2][2]=z3[t2][1]-z3[t2][0];
262 for(t3=t2;t3
263 { fzx=x3[t3][1]-x3[t2][1];
264 fzy=y3[t3][1]-y3[t2][1];
265 fzz=z3[t3][1]-z3[t2][1];
266 if(fzx!=0) { fzx=1/fzx; x3[t2][3]=x3[t2][3]+fzx;
267 x3[t3][3]=x3[t3][3]-fzx; }
268 if(fzy!=0) { fzy=1/fzy; y3[t2][3]=y3[t2][3]+fzy;
269 y3[t3][3]=y3[t3][3]-fzy; }
270 if(fzz!=0) { fzz=1/fzz; z3[t2][3]=z3[t2][3]+fzz;
271 z3[t3][3]=z3[t3][3]-fzz; }
272 }
273 // Bewerk cordinaten als t_frag ongelijk aan 1.
274 if(t_frag!=1)
275 { x3[t2][2]=x3[t2][2]*t_frag; x3[t2][3]=x3[t2][3]*t_frag;
276 y3[t2][2]=y3[t2][2]*t_frag; y3[t2][3]=y3[t2][3]*t_frag;
277 z3[t2][2]=z3[t2][2]*t_frag; z3[t2][3]=z3[t2][3]*t_frag;
278 }
279 // Bepaal de nieuwe cordinaten.
280 x3[t2][0]=x3[t2][1];
281 y3[t2][0]=y3[t2][1];
282 z3[t2][0]=z3[t2][1];
283 x3[t2][1]=x3[t2][0]+x3[t2][2]+x3[t2][3];
284 y3[t2][1]=y3[t2][0]+y3[t2][2]+y3[t2][3];
285 z3[t2][1]=z3[t2][0]+z3[t2][2]+z3[t2][3];
286 // Test grensoverschrijding.
287 if(grens>0)
288 { if(x3[t2][1]<-grens||x3[t2][1]>grens)
289 { g_temp=x3[t2][1]; x3[t2][1]=-x3[t2][0]; x3[t2][0]=-g_temp; }
290 if(y3[t2][1]<-grens||y3[t2][1]>grens)
291 { g_temp=y3[t2][1]; y3[t2][1]=-y3[t2][0]; y3[t2][0]=-g_temp; }
292 if(z3[t2][1]<-grens||z3[t2][1]>grens)
293 { g_temp=z3[t2][1]; z3[t2][1]=-z3[t2][0]; z3[t2][0]=-g_temp; }
294 }
295 }
296 for(t2=0;t2
297 fprintf(bestand, " %f %f %f", x3[t2][1], y3[t2][1], z3[t2][1]);
298 for(t2=0;t2
299 { x2[t2][0]=y3[t2][1]-x3[t2][1];
300 y2[t2][0]=-z3[t2][1]+x3[t2][1]/2;
301 x2[t2][0]=x_max/2-w_x*x2[t2][0];
302 y2[t2][0]=y_max/2-w_y*y2[t2][0];
303 putpixel(x2[t2][0],y2[t2][0],2+t2);
304 }
305 putchar(13); printf("%d",t1+1);
306 }
307 putchar(13); printf("Klaar");
308 fclose(bestand);
309 b_test=1;
310 getch();
311 closegraph();
312}
313
314void geendisk(void) // [A]lleen rekenen en tekenen.
315{ t1=0; t2=2639;
316 installuserdriver("Svga256",DetectSvga256);
317 initgraph(&t1,&t2,"");
318 w_x=(x_max+1)/(w_g*2); w_y=(y_max+1)/(w_g*2);
319 if(modus!=0) diepte=255/(w_g*2);
320
321 printf(" |%d|%d|%f|%f|%f|%f|%f|%d|XXXXXX",
322 stap, deel, r_o, r_n, t_frag, grens, w_g, spoor);
323 gotoxy(0,0);
324
325 // Cordinaten berekenen, schrijven naar grafisch beeldscherm.
326 for(t1=0;t1
327 { for(t2=0;t2
328 { x3[t2][3]=0;
329 y3[t2][3]=0;
330 z3[t2][3]=0;
331 }
332 putchar(13);printf("%d", t1);
333 if(midd>0) { midx=0; midy=0; }
334 for(t2=0;t2
335 { x3[t2][2]=x3[t2][1]-x3[t2][0];
336 y3[t2][2]=y3[t2][1]-y3[t2][0];
337 z3[t2][2]=z3[t2][1]-z3[t2][0];
338 for(t3=t2;t3
339 { fzx=x3[t3][1]-x3[t2][1];
340 fzy=y3[t3][1]-y3[t2][1];
341 fzz=z3[t3][1]-z3[t2][1];
342 if(fzx!=0) { fzx=1/fzx; x3[t2][3]=x3[t2][3]+fzx;
343 x3[t3][3]=x3[t3][3]-fzx; }
344 if(fzy!=0) { fzy=1/fzy; y3[t2][3]=y3[t2][3]+fzy;
345 y3[t3][3]=y3[t3][3]-fzy; }
346 if(fzz!=0) { fzz=1/fzz; z3[t2][3]=z3[t2][3]+fzz;
347 z3[t3][3]=z3[t3][3]-fzz; }
348 }
349 // Bewerk cordinaten als t_frag ongelijk aan 1.
350 if(t_frag!=1)
351 { x3[t2][2]=x3[t2][2]*t_frag; x3[t2][3]=x3[t2][3]*t_frag;
352 y3[t2][2]=y3[t2][2]*t_frag; y3[t2][3]=y3[t2][3]*t_frag;
353 z3[t2][2]=z3[t2][2]*t_frag; z3[t2][3]=z3[t2][3]*t_frag;
354 }
355 // Bepaal de nieuwe cordinaten.
356 x3[t2][0]=x3[t2][1];
357 y3[t2][0]=y3[t2][1];
358 z3[t2][0]=z3[t2][1];
359 x3[t2][1]=x3[t2][0]+x3[t2][2]+x3[t2][3];
360 y3[t2][1]=y3[t2][0]+y3[t2][2]+y3[t2][3];
361 z3[t2][1]=z3[t2][0]+z3[t2][2]+z3[t2][3];
362 // Test grensoverschrijding.
363 if(grens>0)
364 { if(x3[t2][1]<-grens||x3[t2][1]>grens)
365 { g_temp=x3[t2][1]; x3[t2][1]=-x3[t2][0]; x3[t2][0]=-g_temp; }
366 if(y3[t2][1]<-grens||y3[t2][1]>grens)
367 { g_temp=y3[t2][1]; y3[t2][1]=-y3[t2][0]; y3[t2][0]=-g_temp; }
368 if(z3[t2][1]<-grens||z3[t2][1]>grens)
369 { g_temp=z3[t2][1]; z3[t2][1]=-z3[t2][0]; z3[t2][0]=-g_temp; }
370 }
371 }
372 for(t2=0;t2
373 { x2[t2][0]=y3[t2][1]-x3[t2][1];
374 y2[t2][0]=-z3[t2][1]+x3[t2][1]/2;
375 if(midd>0)
376 { midx=midx+x2[t2][0];
377 midy=midy+y2[t2][0];
378 }
379 }
380 if(midd>0) { midx=midx/deel; midy=midy/deel; }
381 for(t2=0;t2
382 { if(midd>0)
383 { x2[t2][0]=x_max/2+midx-w_x*x2[t2][0];
384 y2[t2][0]=y_max/2+midy-w_y*y2[t2][0];
385 }
386 else
387 { x2[t2][0]=x_max/2-w_x*x2[t2][0];
388 y2[t2][0]=y_max/2-w_y*y2[t2][0];
389 }
390 if(modus==0) putpixel(x2[t2][0],y2[t2][0],2+t2);
391 else putpixel(x2[t2][0],y2[t2][0],1+(x3[t2][1]+w_g)*diepte);
392 if(spoor>0)
393 { if(t1
394 { x2[t2][spoor-1-t1]=x2[t2][0]; y2[t2][spoor-1-t1]=y2[t2][0]; }
395 else
396 { putpixel(x2[t2][spoor-1],y2[t2][spoor-1],0);
397 for(t3=spoor-1;t3>0;t3--)
398 { x2[t2][t3]=x2[t2][t3-1]; y2[t2][t3]=y2[t2][t3-1]; }
399 }
400 }
401 }
402 putchar(13); printf("%d",t1+1);
403 }
404 putchar(13); printf("Klaar");
405 getch();
406 closegraph();
407}
408
409void teken(void)
410{ t1=0; t2=2639;
411 installuserdriver("Svga256",DetectSvga256);
412 initgraph(&t1,&t2,"");
413
414 // Berekenen hoeveelheid pixels per nheid.
415 w_x=(x_max+1)/(w_g*2); w_y=(y_max+1)/(w_g*2);
416
417 bestand=fopen(b_naam,"r");
418 fscanf(bestand, "%d%d%f%f%f%f", &stap, &deel, &r_o, &r_n, &t_frag, &grens);
419 printf(" |%d|%d|%f|%f|%f|%f|%f|%d|%s",
420 stap, deel, r_o, r_n, t_frag, grens, w_g, spoor, b_naam);
421
422 if(modus!=0) diepte=255/(w_g*2);
423 for(t1=0;t1
424 { putchar(13);printf("%d", t1);
425 if(midd>0) { midx=0; midy=0; }
426 for(t2=0;t2
427 fscanf(bestand, "%f%f%f", &x3[t2][1], &y3[t2][1], &z3[t2][1]);
428 for(t2=0;t2
429 { x2[t2][0]=y3[t2][1]-x3[t2][1];
430 y2[t2][0]=-z3[t2][1]+x3[t2][1]/2;
431 if(midd>0)
432 { midx=midx+x2[t2][0];
433 midy=midy+y2[t2][0];
434 }
435 }
436 if(midd>0) { midx=midx/deel; midy=midy/deel; }
437 for(t2=0;t2
438 { if(midd>0)
439 { x2[t2][0]=x_max/2+midx-w_x*x2[t2][0];
440 y2[t2][0]=y_max/2+midy-w_y*y2[t2][0];
441 }
442 else
443 { x2[t2][0]=x_max/2-w_x*x2[t2][0];
444 y2[t2][0]=y_max/2-w_y*y2[t2][0];
445 }
446 if(modus==0) putpixel(x2[t2][0],y2[t2][0],2+t2);
447 else putpixel(x2[t2][0],y2[t2][0],1+(x3[t2][1]+w_g)*diepte);
448 if(spoor>0)
449 { if(t1
450 { x2[t2][spoor-1-t1]=x2[t2][0]; y2[t2][spoor-1-t1]=y2[t2][0]; }
451 else
452 { putpixel(x2[t2][spoor-1],y2[t2][spoor-1],0);
453 for(t3=spoor-1;t3>0;t3--)
454 { x2[t2][t3]=x2[t2][t3-1]; y2[t2][t3]=y2[t2][t3-1]; }
455 }
456 }
457 }
458 }
459 putchar(13); printf("Klaar");
460 fclose(bestand);
461 getch();
462 closegraph();
463}
464
465void main(void)
466{ // Beginwaarden zetten.
467 stap=250; deel=3; r_o=100; r_n=.0001; t_frag=1; grens=0; w_g=500; spoor=0;
468 midd=0; spoor=0; modus=0;
469 clrscr(); textcolor(10);
470
471 // Grafische modus bepalen.
472 t1=0; t2=2639;
473 installuserdriver("Svga256",DetectSvga256);
474 initgraph(&t1,&t2,"");
475 x_max=getmaxx(); y_max=getmaxy();
476 closegraph();
477
478 // Test of standaard bestand bestaat.
479 strcpy(b_naam, "bestand.xyz");
480 b_test=0;
481 varbestand();
482
483 // Begin programma-lus.
484 prog=1;
485 do
486 { menuopbeeld();
487 toets=0;
488 menuvraag();
489 // [b]estandsnaam.
490 if(toets==98) varbestand();
491 // [R]eken.
492 if(toets==82)
493 { if(b_test==1)
494 { printf("Bestand %s overschrijven? [j/n] ", b_naam);
495 i_temp=getch();
496 putchar(13); printf(" ");
497 putchar(13);
498 if(i_temp==106) b_test=0;
499 }
500 if(b_test==0)
501 { willekeur();
502 if(grens>0||t_frag!=1) rekenmetopties(); else reken();
503 }
504 }
505 if(toets==69)
506 { if(b_test==1)
507 { printf("Bestand %s overschrijven? [j/n] ", b_naam);
508 i_temp=getch();
509 putchar(13); printf(" ");
510 putchar(13);
511 if(i_temp==106) b_test=0;
512 }
513 if(b_test==0)
514 { willekeur();
515 rekenenteken();
516 }
517 }
518 // [T]eken.
519 if(toets==84) teken();
520 if(toets==65) { willekeur(); geendisk(); }
521 if(toets==81) theorie();
522 if(toets==63) { printf("Bedacht en geschreven door G.J.Smit.");
523 getch(); }
524 if(toets==83) prog=0;
525 } while(prog>0);
526}
527