A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
66
Task/Mandelbrot-set/JavaScript/mandelbrot-set-1.js
Normal file
66
Task/Mandelbrot-set/JavaScript/mandelbrot-set-1.js
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
function Mandeliter(cx, cy, maxiter)
|
||||
{
|
||||
var i;
|
||||
var x = 0.0;
|
||||
var y = 0.0;
|
||||
for (i = 0; i < maxiter && x*x + y*y <= 4; ++i)
|
||||
{
|
||||
var tmp = 2*x*y;
|
||||
x = x*x - y*y + cx;
|
||||
y = tmp + cy;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
function Mandelbrot()
|
||||
{
|
||||
var width = 900;
|
||||
var height = 600;
|
||||
var cd = document.getElementById('calcdata');
|
||||
var xmin = parseFloat(cd.xmin.value);
|
||||
var xmax = parseFloat(cd.xmax.value);
|
||||
var ymin = parseFloat(cd.ymin.value);
|
||||
var ymax = parseFloat(cd.ymax.value);
|
||||
var iterations = parseInt(cd.iterations.value);
|
||||
var ctx = document.getElementById('mandelimage').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*(900*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);
|
||||
}
|
||||
38
Task/Mandelbrot-set/JavaScript/mandelbrot-set-2.js
Normal file
38
Task/Mandelbrot-set/JavaScript/mandelbrot-set-2.js
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Mandelbrot set</title>
|
||||
<script src="Mandelbrot.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body onload="Mandelbrot()">
|
||||
<h1>Mandelbrot set</h1>
|
||||
|
||||
<form id="calcdata" onsubmit="javascript:Mandelbrot(); return false;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>xmin =</td>
|
||||
<td><input name="xmin" type="text" size="10" value="-2"></td>
|
||||
<td>xmax =</td>
|
||||
<td><input name="xmax" type="text" size="10" value="1"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ymin =</td>
|
||||
<td><input name="ymin" type="text" size="10" value="-1"></td>
|
||||
<td>ymax =</td>
|
||||
<td><input name="ymax" type="text" size="10" value="1"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>iterations =
|
||||
<input name="iterations" type="text" size="10" value="1000"></p>
|
||||
<p>
|
||||
<input type="submit" value=" Calculate ">
|
||||
<input type="reset" value=" Reset form ">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
<canvas id="mandelimage" width="900" height="600">
|
||||
This page needs a browser with canvas support.
|
||||
</canvas>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue