/****************************************** * * * Sphere-Lissajous.c - Lissajous Curves * * * * written by C.Raufuß of ! WIZARD WORKS ! * * * * with SAS/C 5.10, on 06/04/91 * * * * Version 1.00 * * * ******************************************/ #include #include #include #include #include #include #include #include int CXBRK(void) { return(0); } int chkabort(void) { return(0); } void main(int argc,char **argv) { struct IntuitionBase *IntuitionBase=NULL; struct GfxBase *GfxBase=NULL; struct IntuiMessage *IMsg; struct Screen *s=NULL; struct NewScreen ns = { 0,0, 640,256, 2, 1,0, HIRES, CUSTOMSCREEN, NULL, NULL, NULL, NULL }; struct Window *w=NULL; struct NewWindow nw = { 0,0, 640,256, -1,-1, MOUSEBUTTONS, BORDERLESS|SMART_REFRESH|ACTIVATE|RMBTRAP, NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL,NULL, CUSTOMSCREEN }; ULONG class; double a,b,m,n,o,x,y,z; register int t; if(argc!=3) { printf("Sphere Lissajous v1.00 by C.Raufuß ©1991\nUsage: SpLi a b\n"); goto cleanexit; } printf("Sphere Lissajous v1.00 by C.Raufuß of ! WIZARD WORKS ! ©1991\n"); a=atof(argv[1]); b=atof(argv[2]); if(!(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0))) { goto cleanexit; } if(!(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0))) { goto cleanexit; } if(!(s=(struct Screen *)OpenScreen(&ns))) { goto cleanexit; } nw.Screen=s; if(!(w=(struct Window *)OpenWindow(&nw))) { goto cleanexit; } /******** Lissajous Algorithm ***********/ SetAPen(w->RPort,(ULONG)3); DrawEllipse(w->RPort,(ULONG)320,(ULONG)128,(ULONG)240,(ULONG)120); for(t=0;t<=100000;t++) { m=a*t; n=b*t; o=sin(m); x=o*cos(n); y=o*sin(n); z=cos(m); SetAPen(w->RPort,(ULONG)1); WritePixel(w->RPort,(ULONG)((x*240)+320),(ULONG)((z*120)+128)); SetAPen(w->RPort,(ULONG)2); WritePixel(w->RPort,(ULONG)((x*240)+320),(ULONG)((y*120)+128)); if((IMsg=(struct IntuiMessage *)GetMsg(w->UserPort))) { class=IMsg->Class; ReplyMsg((struct Message *)IMsg); if(class==MOUSEBUTTONS) goto cleanexit; } } /****************************************/ Wait(1<UserPort->mp_SigBit); cleanexit: if(w) { CloseWindow((struct Window *)w); } if(s) { CloseScreen((struct Screen *)s); } if(GfxBase) { CloseLibrary((struct GfxBase *)GfxBase); } if(IntuitionBase) { CloseLibrary((struct IntuitionBase *)IntuitionBase); } }