home *** CD-ROM | disk | FTP | other *** search
- # include <stdio.h>
- # include <stdlib.h>
- # include <conio.h>
- # include <graphics.h>
-
- #define DRIVERPATH "d:\\tc\\bgi"
-
- void main()
- {
- long xecke , yecke , zecke , wecke;
- float fxecke , fyecke , fzecke , fwecke;
- long seite , spaltex , spaltey , spaltez;
- float fseite;
- long orx , ory , orz;
- int gr , inskin , outskin;
- long ar , ai , br , bi;
- register long zr , zi , zr2 , zi2;
- long ar2 , ai2 , ahelp1 , ahelp2 , help , temp;
- int iterations;
- int shade , col;
- int x , y, z;
- int orgx , orgy;
- int graphdriver , graphmode;
- int i;
-
- clrscr();
-
- printf("Berechnungsparameter\n");
- printf("\n x-Ecke : ") ; scanf("%f", &fxecke);
- printf("\n y-Ecke : ") ; scanf("%f", &fyecke);
- printf("\n z-Ecke : ") ; scanf("%f", &fzecke);
- printf("\n w-Ecke : ") ; scanf("%f", &fwecke);
- printf("\n Seitel : ") ; scanf("%f", &fseite);
- printf("\n");
- printf("\n x-Orientierung : ") ; scanf("%ld", &orx);
- printf("\n y-Orientierung : ") ; scanf("%ld", &ory);
- printf("\n z-Orientierung : ") ; scanf("%ld", &orz);
- printf("\n");
- printf("\n Innerer Schwellwert : ") ; scanf("%d", &inskin);
- printf("\n Äußerer Schwellwert : ") ; scanf("%d", &outskin);
- printf("\n");
- printf("\n Auflösung : ") ; scanf("%d", &gr);
-
- xecke = (long)(fxecke * 8192);
- yecke = (long)(fyecke * 8192);
- zecke = (long)(fzecke * 8192);
- wecke = (long)(fwecke * 8192);
- seite = (long)(fseite * 8192);
-
- spaltex = (seite / gr) * orx;
- spaltey = (seite / gr) * ory;
- spaltez = (seite / gr) * orz;
-
- col = 0;
-
- graphdriver = VGA; graphmode = VGAHI;
- initgraph(&graphdriver,&graphmode, DRIVERPATH);
-
- orgx = 320 -gr;
- orgy = 240 - (gr >> 1);
-
- for (i = 0; i < 16; i++)
- setpalette(i,i);
-
- setrgbpalette(0,0,0,0);
- setrgbpalette(1,42,42,0);
- setrgbpalette(2,63,63,0);
- setrgbpalette(5,32,32,0);
- setrgbpalette(6,40,40,0);
- setrgbpalette(3,42,21,42);
- setrgbpalette(4,63,32,63);
- setrgbpalette(7,32,16,32);
- setrgbpalette(8,40,20,40);
- bi = wecke;
- br = zecke;
-
- for (z = 0; z < gr; z++)
- {
- ai = yecke;
-
- for (y = 0; y < gr; y++)
- {
- ar = xecke;
- shade = 0;
-
- for (x = gr; x > -1; )
- {
-
- iterations = 0;
- zr = -ar; zi = -ai;
- help = (6 * ar * ai) >> 13;
- ar2 = (ar * ar) >> 13;
- ai2 = (ai * ai) >> 13;
- ahelp2 = -(ahelp1 = ar2 -ai2);
-
-
- do
- {
- temp = ((zr * ((zr2 = ((zr * zr) >> 13))
- - 3 * ((zi2 = ((zi * zi) >> 13)) + ahelp1))
- + help * zi) >> 13) + br;
- zi = ((-zi * (zi2 - 3 * (zr2 + ahelp2))
- - help * zr) >> 13) + bi;
- zr = temp;
- }
- while ((++iterations < inskin) && ((zr2 + zi2) < 32768));
-
- if (iterations >= outskin)
- shade |= 4;
-
- if (shade & 2)
- {
- putpixel(x + y + orgx, 480 - (((x - y) >> 1) + z + orgy),
- shade + col);
- /* col = (z & 16) ? -1 : 1; */
- col = (iterations == inskin) ? -1 : 1;
- }
- else
- col = -1;
-
- shade >>= 1;
-
- ar += spaltex;
- x--;
- }
- ai += spaltey;
- }
- br += spaltez;
- }
-
-
- }
-