在 javascript 中绘制分形?
Drawing fractals in javascript?
我正在研究一个 2d(对于初学者)分形项目,以此作为学习更多递归函数的有趣方式。我正在寻找一些函数,它根据一些条件规则为基于线的分形输出坐标。有点像 H 树。
这样的function/algorithm有名字吗?是否有任何简单的通用实现可供查看?
纯属娱乐:
var c = document.getElementById("cnv").getContext("2d");
var f = Math.sqrt(2);
function hor(x, y, len) {
if(len < 1) return;
c.beginPath();
c.moveTo(x - len/2, y);
c.lineTo(x + len/2, y);
c.stroke();
setTimeout(function() {
ver(x - len/2, y, len/f);
ver(x + len/2, y, len/f);
}, 500);
}
function ver(x, y, len) {
if(len < 1) return;
c.beginPath();
c.moveTo(x, y - len/2);
c.lineTo(x, y + len/2);
c.stroke();
setTimeout(function() {
hor(x, y - len/2, len/f);
hor(x, y + len/2, len/f);
}, 500);
}
hor(300, 90, 150)
<canvas id="cnv" width="600" height="180" />
我正在研究一个 2d(对于初学者)分形项目,以此作为学习更多递归函数的有趣方式。我正在寻找一些函数,它根据一些条件规则为基于线的分形输出坐标。有点像 H 树。
这样的function/algorithm有名字吗?是否有任何简单的通用实现可供查看?
纯属娱乐:
var c = document.getElementById("cnv").getContext("2d");
var f = Math.sqrt(2);
function hor(x, y, len) {
if(len < 1) return;
c.beginPath();
c.moveTo(x - len/2, y);
c.lineTo(x + len/2, y);
c.stroke();
setTimeout(function() {
ver(x - len/2, y, len/f);
ver(x + len/2, y, len/f);
}, 500);
}
function ver(x, y, len) {
if(len < 1) return;
c.beginPath();
c.moveTo(x, y - len/2);
c.lineTo(x, y + len/2);
c.stroke();
setTimeout(function() {
hor(x, y - len/2, len/f);
hor(x, y + len/2, len/f);
}, 500);
}
hor(300, 90, 150)
<canvas id="cnv" width="600" height="180" />