mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-29 14:51:17 +00:00
48 lines
976 B
JavaScript
48 lines
976 B
JavaScript
|
|
||
|
// slider UI objects
|
||
|
mx = ui.slider(0,2000).initial(1028)
|
||
|
my = ui.slider(0,2000).initial(1409)
|
||
|
ms = ui.slider(0,2000).initial(615)
|
||
|
|
||
|
// compute slider-derived values
|
||
|
xofs = (mx.value-1000)/500
|
||
|
yofs = (my.value-1000)/500
|
||
|
zoom = Math.pow(0.99, ms.value)
|
||
|
|
||
|
// create bitmap
|
||
|
fract = bitmap.indexed(512,256,8)
|
||
|
|
||
|
// compute fractal using assign()
|
||
|
fract.assign(mandel)
|
||
|
|
||
|
// mandelbrot pixel function
|
||
|
function mandel(x,y) {
|
||
|
return iterateEquation(
|
||
|
(x-fract.width/2)*zoom-xofs,
|
||
|
(y-fract.height/2)*zoom-yofs, 10, 256)[0];
|
||
|
}
|
||
|
|
||
|
// mandelbrot compute function
|
||
|
function iterateEquation(Cr, Ci, escapeRadius, iterations)
|
||
|
{
|
||
|
var Zr = 0;
|
||
|
var Zi = 0;
|
||
|
var Tr = 0;
|
||
|
var Ti = 0;
|
||
|
var n = 0;
|
||
|
for ( ; n<iterations && (Tr+Ti)<=escapeRadius; ++n ) {
|
||
|
Zi = 2 * Zr * Zi + Ci;
|
||
|
Zr = Tr - Ti + Cr;
|
||
|
Tr = Zr * Zr;
|
||
|
Ti = Zi * Zi;
|
||
|
}
|
||
|
for ( var e=0; e<4; ++e ) {
|
||
|
Zi = 2 * Zr * Zi + Ci;
|
||
|
Zr = Tr - Ti + Cr;
|
||
|
Tr = Zr * Zr;
|
||
|
Ti = Zi * Zi;
|
||
|
}
|
||
|
return [n, Tr, Ti];
|
||
|
}
|
||
|
|