36 lines
916 B
Text
36 lines
916 B
Text
10 REM Dragon curve
|
|
20 REM SIN, COS in arrays for PI/4 multipl.
|
|
30 DIM S(7), C(7)
|
|
40 QPI = ATN(1): SQ = SQR(2)
|
|
50 FOR I = 0 TO 7
|
|
60 S(I) = SIN(I * QPI): C(I) = COS(I * QPI)
|
|
70 NEXT I
|
|
80 LEVEL% = 15
|
|
90 INSIZE = 128: REM 2^WHOLE_NUM (looks better)
|
|
100 X = 112: Y = 70
|
|
110 ROTQPI% = 0: RQ% = 1
|
|
120 DIM R%(LEVEL%)
|
|
130 SCREEN 2: CLS
|
|
140 GOSUB 160
|
|
150 END
|
|
160 REM ** Dragon
|
|
170 ROTQPI% = ROTQPI% AND 7
|
|
180 IF LEVEL% > 1 THEN GOTO 240
|
|
190 YN = S(ROTQPI%) * INSIZE + Y
|
|
200 XN = C(ROTQPI%) * INSIZE + X
|
|
210 LINE (2 * X, Y)-(2 * XN, YN): REM For SCREEN 2 doubled x-coords
|
|
220 X = XN: Y = YN
|
|
230 RETURN
|
|
240 INSIZE = INSIZE * SQ / 2
|
|
250 ROTQPI% = (ROTQPI% + RQ%) AND 7
|
|
260 LEVEL% = LEVEL% - 1
|
|
270 R%(LEVEL%) = RQ%: RQ% = 1
|
|
280 GOSUB 160
|
|
290 ROTQPI% = (ROTQPI% - R%(LEVEL%) * 2) AND 7
|
|
300 RQ% = -1
|
|
310 GOSUB 160
|
|
320 RQ% = R%(LEVEL%)
|
|
330 ROTQPI% = (ROTQPI% + RQ%) AND 7
|
|
340 LEVEL% = LEVEL% + 1
|
|
350 INSIZE = INSIZE * SQ
|
|
360 RETURN
|