home *** CD-ROM | disk | FTP | other *** search
- /* recursive orbiter */
-
- double twopi;
-
- #define TWOPI (2*3.14159)
-
- rorbit(double cx, double cy, int color, int prad, double orad, double frame, double total)
- {
- double angle;
-
-
- SetColor(color);
- Circle(cx,cy,prad);
- if (prad < 1)
- return;
- angle = TWOPI*frame/total;
- rorbit(cx+orad*cos(angle),cy+orad*sin(angle),color+6,
- prad/2,orad/3,frame,total/2);
- angle *= 2;
- rorbit(cx+orad*5/2*cos(angle), cy+orad*5/2*sin(angle),
- color+3, prad/3, orad/3, frame, total/3);
- }
-
- typedef struct
- {
- int objrad;
- int orbrad;
- int traces;
- int cenx, ceny;
- } OrbData;
-
- OrbFunc(double time, OrbData *od)
- {
- int i;
-
- for (i=0; i<od->traces; i++)
- rorbit(od->cenx,od->ceny,100,od->objrad,time*od->orbrad,i,od->traces);
- }
-
- main()
- {
- int i;
- int frames = 132;
- OrbData od;
-
- GetSize(&od.cenx, &od.ceny);
- od.cenx /= 2;
- od.ceny /= 2;
- od.objrad = 32;
- od.orbrad = frames;
- od.traces = 32;
- OverTime(OrbFunc,&od);
- }
-