REM These are the circle drawing functions. REM REM Use %INCLUDE CIRCOM.BAS to include the functions REM in your program. REM REM REM CALL BEG.CIR to initialize the circle arrays REM CALL PLOT.CIR to draw a circle without fill REM CALL FILL.CIR to draw a circle with fill REM REM The circle is centered at .5,.5 with a radius REM of .5 in a coordinate system ranging from 0 to 1 REM on the X and Y axes. REM REM Initialize the circle drawing arrays X.ARRAY and REM Y.ARRAY by using CALL BEG.CIR in the beginning REM of your program. This statement only needs to REM be executed once. There is a long delay while REM this CALL is completed; you may want to put REM a message in your program to let the user know REM that the machine is computing. REM REM You can position the circle as you wish using REM the SET VIEWPORT and SET WINDOW statements prior REM to calling the drawing functions. REM REM The aspect ratio of the device must be adjusted REM in order to proportion the circle. You can use REM the following statements to accomplish this: REM REM ASK DEVICE X.AXIS,Y.AXIS REM SET WINDOW 0,X.AXIS/Y.AXIS,0,1 REM REM These statements scale the window so that the X REM and Y axes use the same unit scaling regardless REM of the aspect ratio of the device. The circle REM is drawn with a shift to the left of the viewport REM because of the increased scaling of the X axis. REM You can also use the BOUNDS statement to square REM the device or the VIEWPORT statement to rescale REM the viewport. REM REM The functions make use of the variables L.CIR REM X.ARRAY, Y.ARRAY, and I.ANGLE. X.ARRAY is an REM array of the X coordinates of the points around REM the circle. Y.ARRAY is the corresponding Y REM coordinates. L.CIR contains a count of the REM number of coordinate pairs. I.ANGLE is only REM used by the FOR loop in BEG.CIR. REM DEF BEG.CIR DIM X.ARRAY(64) DIM Y.ARRAY(64) L.CIR=0 REM THIS FOR LOOP STEPS THROUGH 0 TO 360 DEGREES REM USING RADIANS. THERE ARE 2PI RADIANS IN 360 DEGREES. FOR I.ANGLE = 0 TO 6.28 STEP .1 X.ARRAY(L.CIR) = .5 + (.5 * COS(I.ANGLE)) Y.ARRAY(L.CIR) = .5 + (.5 * SIN(I.ANGLE)) L.CIR = L.CIR + 1 NEXT I.ANGLE REM THE CIRCLE MUST BE CLOSED FOR MAT PLOT X.ARRAY(L.CIR) = X.ARRAY(0) Y.ARRAY(L.CIR) = Y.ARRAY(0) RETURN FEND DEF PLOT.CIR MAT PLOT L.CIR: X.ARRAY,Y.ARRAY RETURN FEND DEF FILL.CIR MAT FILL L.CIR-1: X.ARRAY,Y.ARRAY RETURN FEND