10 REM Dragon curve 20 DEF FN MOD(M) = M - INT(M / 8) * 8 30 REM SIN, COS in arrays for PI/4 multipl. 40 DIM S(7), C(7) 50 QPI = ATN(1): SQ = SQR(2) 60 FOR I = 0 TO 7 70 S(I) = SIN(I * QPI): C(I) = COS(I * QPI) 80 NEXT I 90 LEVEL = 15 100 INSIZE = 128: REM 2^WHOLE_NUM (looks better) 110 X = 98: Y = 68 120 ROTQPI = 0: RQ = 1 130 DIM R(LEVEL) 140 HGR2: HCOLOR = 1 150 GOSUB 170 160 END 170 REM ** Dragon 180 ROTQPI = FN MOD8(ROTQPI) 190 IF LEVEL > 1 THEN GOTO 250 200 YN = S(ROTQPI) * INSIZE + Y 210 XN = C(ROTQPI) * INSIZE + X 220 HPLOT X, Y TO XN, YN 230 X = XN: Y = YN 240 RETURN 250 INSIZE = INSIZE * SQ / 2 260 ROTQPI = FN MOD8(ROTQPI + RQ) 270 LEVEL = LEVEL - 1 280 R(LEVEL) = RQ: RQ = 1 290 GOSUB 170 300 ROTQPI = FN MOD8(ROTQPI - R(LEVEL) * 2) 310 RQ = -1 320 GOSUB 170 330 RQ = R(LEVEL) 340 ROTQPI = FN MOD8(ROTQPI + RQ) 350 LEVEL = LEVEL + 1 360 INSIZE = INSIZE * SQ 370 RETURN