Archimedean Spiral
0 POKE65497,0:SX=144:SY=56:SZ=64:CX=320:CY=192:HSCREEN 2
10 A=1.5
20 B=1.5
30 PI=3.141592
40 HSET(160,96)
50 FOR T=0 TO 15*PI STEP .1
60 R=A+B*T
70 HLINE-(160+2*R*SIN(T),96+R*COS(T)),PSET
80 NEXT
100 GOTO 100
My on again off again blog about whatever computer related hobby projects I happen to be working on at the moment.
Saturday, October 22, 2022
Archimedean Spiral
Maurer Rose Pattern
Just one of many Maurer Rose Patterns that are possible.
0 POKE65497,0:SX=144:SY=56:SZ=64:CX=320:CY=192:HSCREEN 2
REM 1 DIM R(CX):FOR I=0 TO CX:R(I)=CY:NEXT I:GOTO 10
REM XO,YO = ORIGIN
10 N=7:D=29:XO=160:YO=95:PI=22/7
REM DW = DRAW WIDTH
REM T=THETA
20 DW = 1 : HCOLOR 7
30 FOR T = 0 TO 360
40 K = T * D * PI / 180
50 R = 98 * SIN(N * K)
60 X = XO - R * COS(K)
70 Y = YO - R * SIN(K)
80 HLINE-(X, Y),PSET
90 NEXT
100 DW = 2 : HCOLOR 3
110 FOR T = 0 TO 360
120 K = T * PI / 180
130 R = 98 * SIN(N * K)
140 X = XO + R * COS(K)
150 Y = YO - R * SIN(K)
160 HLINE -(X, Y),PSET
170 NEXT
180 GOTO 180
Another 3D Plot
A quick port from the Atari.
I haven't optimized this other than to hide pixels that are behind other pixels using array R().
0 POKE65497,0:CX=320:CY=192:HSCREEN 2:HCOLOR3
1 DIM R(CX):FOR I=0 TO CX:R(I)=CY:NEXT I:GOTO 10
2 R=SQR(X*X+Y*Y)*1.5: IF R=0 THEN F=90:GOTO 4
3 F=90*SIN(R)/R
4 A=10*X+160-5*Y:B=5*Y+2.5*X+93:RETURN
10 FOR Y=10 TO -10 STEP -0.1
REM REMOVED FROM ORIGINAL CODE
REM 20 IF Y=INT(Y) THEN 70
REM 30 FOR X=10 TO -10 STEP -1
REM 40 GOSUB 2:IF R(A)>B-F THEN R(A)=B-F:HSET(A,B-F)
REM 50 NEXT X,Y:GOTO 101
70 FOR X=10 TO -10 STEP -0.1
80 GOSUB 2:IF R(A)>B-F THEN R(A)=B-F:HSET(A,B-F)
90 NEXT X,Y
101 GOTO 101
10 FOR Y=10 TO -10.1 STEP -0.1
20 IF Y-INT(Y)<.1 THEN 70
30 FOR X=10 TO -10 STEP -1
40 GOSUB 2:IF R(A)>B-F THEN R(A)=B-F:HSET(A,B-F)
50 NEXT X,Y :GOTO 101