CIRCLE IN BASIC.
Posted: Sun May 21, 2023 10:19 pm
CODE TO DRAW A CIRCLE IN BASIC. SCREEN $80
WILL CLIP AT EDGES OF SCREEN.
HAS OPTION TO FILL BUT THAT IS QUITE SLOW AND LEAVES A FEW RANDOM
PIXELS UNFILLED DUE TO LACK OF FLOAT PRECISION.
WILL CLIP AT EDGES OF SCREEN.
HAS OPTION TO FILL BUT THAT IS QUITE SLOW AND LEAVES A FEW RANDOM
PIXELS UNFILLED DUE TO LACK OF FLOAT PRECISION.
Code: Select all
REM SAMPLE CIRCLE DRAWING WITHOUT THE CIRCLE COMMAND
10 PI = 3.14159265
20 XLIMIT = 319
30 YLIMIT = 239
REM X CENTER
40 CX = 70
REM Y CENTER
50 CY = 120
REM RA IS RADIUS
60 RA = 40
REM CHANGE FILL TO 1 TO DRAW A SOLID CIRCLE CC IS COLOR
70 CC = 12:FILL = 0
80 SCREEN $80
85 RECT 0,0,XLIMIT,YLIMIT,16
90 GOSUB 3000
100 INPUT X$:SCREEN 0:END
REM CX IS CIRCLE X CENTER
REM CY IS CIRCLE Y CENTER
REM RA IS CIRCLE RADIUS
REM CC IS CIRCLE COLOR
REM FI IS FILL SET TO 1 TO DRAW A FILLED CIRCLE
REM XL IS XLIMIT
REM YL IS YLIMIT
3000 Q = 1 / RA
3005 FOR I = 0 TO PI / 2 STEP Q
3010 DY = SIN(I) * RA
3020 DX = COS(I) * RA
3050 ZX = INT(CX - DX)
3070 ZY = INT(CY - DY)
3090 AX = INT(CX + DX)
3110 AY = INT(CY + DY)
3120 IF AX<0 OR AX > XLIMIT OR AY<0 OR AY > YLIMIT THEN 3140
3130 PSET AX, AY, CC
3140 IF ZX<0 OR ZX>XLIMIT OR AY < 0 OR AY > YLIMIT THEN 3160
3150 PSET ZX, AY, CC
3160 IF AX<0 OR AX > XLIMIT OR ZY<0 OR ZY > YLIMIT THEN 3180
3170 PSET AX, ZY, CC
3180 IF ZX<0 OR ZX > XLIMIT OR ZY<0 OR ZY > YLIMIT THEN 3210
3190 PSET ZX, ZY, CC
3210 NEXT I
3220 IF FILL <> 1 THEN RETURN
3230 FILL = 0
3240 J = RA
3250 RA = RA - 1
3260 IF RA > 0 THEN GOSUB 3000
3270 IF RA > 0 THEN 3250
3280 RA = J:FILL = 1
3290 RETURN