Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
69
Task/Mandelbrot-set/JavaScript/mandelbrot-set.js
Normal file
69
Task/Mandelbrot-set/JavaScript/mandelbrot-set.js
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
function Mandeliter( cx, cy, maxiter ){
|
||||
var
|
||||
x = 0.0,
|
||||
y = 0.0,
|
||||
xx = 0,
|
||||
yy = 0,
|
||||
xy = 0;
|
||||
|
||||
var i = maxiter;
|
||||
while( i-- && xx + yy <= 4 ){
|
||||
xy = x * y;
|
||||
xx = x * x;
|
||||
yy = y * y;
|
||||
x = xx - yy + cx;
|
||||
y = xy + xy + cy;
|
||||
}
|
||||
return maxiter - i;
|
||||
}
|
||||
|
||||
function Mandelbrot( width,height, xmin,xmax, ymin,ymax, iterations ){
|
||||
var canvas = document.createElement( 'canvas' );
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
|
||||
var ctx = canvas.getContext( '2d' );
|
||||
var img = ctx.getImageData( 0, 0, width, height );
|
||||
var pix = img.data;
|
||||
for( var ix = 0; ix < width; ++ix )
|
||||
for( var iy = 0; iy < height; ++iy )
|
||||
{
|
||||
var x = xmin + (xmax - xmin) * ix / (width - 1);
|
||||
var y = ymin + (ymax - ymin) * iy / (height - 1);
|
||||
var i = Mandeliter( x, y, iterations );
|
||||
var ppos = 4 * (width * iy + ix);
|
||||
if( i === iterations )
|
||||
{
|
||||
pix[ppos] = 0;
|
||||
pix[ppos+1] = 0;
|
||||
pix[ppos+2] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var c = 3 * Math.log(i)/Math.log(iterations - 1.0);
|
||||
if (c < 1)
|
||||
{
|
||||
pix[ppos] = 255*c;
|
||||
pix[ppos+1] = 0;
|
||||
pix[ppos+2] = 0;
|
||||
}
|
||||
else if( c < 2 )
|
||||
{
|
||||
pix[ppos] = 255;
|
||||
pix[ppos+1] = 255*(c-1);
|
||||
pix[ppos+2] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pix[ppos] = 255;
|
||||
pix[ppos+1] = 255;
|
||||
pix[ppos+2] = 255*(c-2);
|
||||
}
|
||||
}
|
||||
pix[ ppos+3 ] = 255;
|
||||
}
|
||||
ctx.putImageData( img, 0,0 );
|
||||
document.body.insertBefore( canvas, document.body.childNodes[0] );
|
||||
}
|
||||
|
||||
Mandelbrot( 900,600, -2,1, -1,1, 1000 );
|
||||
Loading…
Add table
Add a link
Reference in a new issue