RosettaCodeData/Task/Dragon-curve/Chipmunk-Basic/dragon-curve.basic

38 lines
871 B
Plaintext

10 rem Dragon curve
20 rem sin, cos in arrays for pi/4 multipl.
30 dim s(7),c(7)
40 for i = 0 to 7
50 s(i) = sin(i*pi/4) : c(i) = cos(i*pi/4)
60 next i
70 level = 15
80 insize = 256 : rem 2^whole_num (looks better)
90 x = 224 : y = 140
100 sq = sqr(2)
110 rotqpi = 0 : rq = 1
120 dim r(level)
130 graphics 0 : graphics cls
140 gosub 160
150 end
160 rem Dragon
170 rotqpi = rotqpi and 7
180 if level <= 1 then
190 yn = s(rotqpi)*insize+y
200 xn = c(rotqpi)*insize+x
210 graphics moveto x,y : graphics lineto xn,yn
220 x = xn : y = yn
230 else
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 endif
370 return