RosettaCodeData/Task/Dragon-curve/BASIC256/dragon-curve.basic256
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

50 lines
1.1 KiB
Text

# Version without functions (for BASIC-256 ver. 0.9.6.66)
graphsize 390,270
level = 18 : insize = 247 # initial values
x = 92 : y = 94 #
iters = 2^level # total number of iterations
qiter = 510/iters # constant for computing colors
SQ = sqrt(2) : QPI = pi/4 # constants
rotation = 0 : iter = 0 : rq = 1.0 # state variables
dim rqs(level) # stack for rq (rotation coefficient)
color white
fastgraphics
rect 0,0,graphwidth,graphheight
refresh
gosub dragon
refresh
imgsave "Dragon_curve_BASIC-256.png", "PNG"
end
dragon:
if level<=0 then
yn = sin(rotation)*insize + y
xn = cos(rotation)*insize + x
if iter*2<iters then
color 0,iter*qiter,255-iter*qiter
else
color qiter*iter-255,(iters-iter)*qiter,0
end if
line x,y,xn,yn
iter = iter + 1
x = xn : y = yn
return
end if
insize = insize/SQ
rotation = rotation + rq*QPI
level = level - 1
rqs[level] = rq : rq = 1
gosub dragon
rotation = rotation - rqs[level]*QPI*2
rq = -1
gosub dragon
rq = rqs[level]
rotation = rotation + rq*QPI
level = level + 1
insize = insize*SQ
return