REM SET MODE TO 8 USING VDU VDU 22,8 REM SET LINE THICKNESS TO 3 VDU 23,23,3| OFF GCOL 1 PROC_ellipsering(200,100,800,800,150,100,200,200,200,2) PROC_ellipsering(10,20,1100,400,200,100,200,50,200,2) PROC_ellipsering(50,200,150,400,200,100,50,145,50,2) PROC_sphere(200,700,50,100,200,100,3) PROC_sphere(800,500,250,200,150,200,1) PROC_sphere(600,500,300,150,150,200,1) PROC_sphere(500,300,300,200,200,200,1) FOR COUN= 100 TO 1000 STEP 50 COL=COL+10 IF COL>200 THEN COL=200 PROC_block(COUN,50,20,200-COL,200,200-COL,8) NEXT COUN (mou) MOUSE x,y,b IF b=4 THEN PROC_sphere(x,y,50,100,200,100,3) GOTO (mou) END DEF PROC_block(H,V,SIZE,X,C,A,DI) P=SIZE/2 FOR Y=1 TO SIZE COLOUR 1,X,C,A LINE H-Y,V-Y,H+Y,V-Y LINE H+Y,V-Y,H+Y,V+Y LINE H+Y,V+Y,H-Y,V+Y LINE H-Y,V+Y,H-Y,V-Y X=X-DI C=C-DI IF X<2 THEN X=2 IF C<2 THEN C=2 IF A<2 THEN A=2 P=P-1 NEXT Y ENDPROC DEF PROC_ellipsering(CENTERH,CENTERV,H,V,SIZE,THICKNESS,X,C,A,DI) IF SIZE > THICKNESS THEN SIZE = THICKNESS OC=THICKNESS/2 OUTCENTERH=CENTERH+OC OUTCENTERV=CENTERV+OC R=0 SWITCH=0 DEPTHCOUNT=SIZE/2 FOR Y=1 TO DEPTHCOUNT COLOUR 1,X,C,A ELLIPSE H,V,OUTCENTERH-R,OUTCENTERV-R ELLIPSE H,V,OUTCENTERH+R,OUTCENTERV+R R=R+1 (leap) X=X-DI C=C-DI A=A-DI IF X<2 THEN X=2 IF C<2 THEN C=2 IF A<2 THEN A=2 NEXT Y ENDPROC ENDPROC DEF PROC_sphere(H,V,SIZE,R,G,B,DI) r%=R g%=G b%=B size%=SIZE dimmer%=DI FOR x%=0 TO size% c%=50 r%=r%-dimmer% g%=g%-dimmer% b%=b%-dimmer% IF r% <2 THEN r%=2 IF g% <2 THEN g%=2 IF b%<2 THEN b%=2 IF r%<50 AND g%<50 AND b%<50 THEN GOTO (jump) COLOUR 1,r%,g%,b% CIRCLE H,V,x% (jump) NEXT x% ENDPROC
MODE 8 FOR x%=1 TO 7 PROCPoly(x%+2,0,50+120*x%,100,50,50,x%,x%+8) NEXT x% END : DEFPROCPoly(n%,starta,cx%,cy%,hr%,vr%,c1%,c2%) REM number of sides, start angle in radians, centre x and y, horizontal and vertical radii, main and highlight colours LOCAL a%,dx%,dy% REM Draw basic shape GCOL c1% FOR a%=0 TO n%-1 MOVE cx%,cy% dx%=hr%*COS(2*PI*a%/n%+starta) dy%=vr%*SIN(2*PI*a%/n%+starta) MOVE cx%+dx%,cy%+dy% dx%=hr%*COS(2*PI*(a%+1)/n%+starta) dy%=vr%*SIN(2*PI*(a%+1)/n%+starta) PLOT 85,cx%+dx%,cy%+dy% NEXT a% REM add radii in highlight colour GCOL c2% FOR a%=0 TO n%-1 dx%=hr%*COS(2*PI*a%/n%+starta) dy%=vr%*SIN(2*PI*a%/n%+starta) LINE cx%,cy%,cx%+dx%,cy%+dy% NEXT a% REM Draw a front facet half the size hr% DIV=2 vr% DIV=2 FOR a%=0 TO n%-1 MOVE cx%,cy% dx%=hr%*COS(2*PI*a%/n%+starta) dy%=vr%*SIN(2*PI*a%/n%+starta) MOVE cx%+dx%,cy%+dy% dx%=hr%*COS(2*PI*(a%+1)/n%+starta) dy%=vr%*SIN(2*PI*(a%+1)/n%+starta) PLOT 85,cx%+dx%,cy%+dy% NEXT a% ENDPROC