prog8/compiler/examples/mandelbrot.p8
Irmen de Jong 00d74551b3 fix for loop code generation.
added flt conversion function.
attempt at implementing break and continue.
var initializer value can be omitted for numeric vars (and default to 0)
subroutine return statement not needed when no return values.
2018-09-18 23:14:32 +02:00

50 lines
1.2 KiB
Lua

%option enable_floats
~ main {
sub start() -> () {
const word width = 159
const word height = 127
word pixelx
byte pixely
float xx
float yy
float x
float y
float x2
byte iter
word plotx
byte ploty
_vm_gfx_clearscr(11)
for pixely in 0 to height { ; @todo 255 as upper limit doesn't work it overflows the loop
for pixelx in 0 to width {
xx=flt(pixelx)/width/3+0.2 ; @todo fix division to return float always, add // integer division
yy=flt(pixely)/height/3.6+0.4
x=0.0
y=0.0
for iter in 0 to 31 {
if(x*x + y*y > 4) break
x2 = x*x - y*y + xx
y=x*y*2 + yy
x=x2
}
plotx = pixelx*2
ploty = pixely*2
_vm_gfx_pixel(plotx, ploty, iter)
_vm_gfx_pixel(plotx+1, ploty, iter)
_vm_gfx_pixel(plotx, ploty+1, iter)
_vm_gfx_pixel(plotx+1, ploty+1, iter)
}
}
_vm_gfx_text(5, 5, 7, "Mandelbrot Fractal")
}
}