50 lines
1.1 KiB
Text
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
|