Имеется код, который по идее должен вырисовывать кривую Леви на канву на html-странице.
var canvas, ctx;
function initialize() {
canvas = document.getElementById('canvas');
ctx = canvas.getContext("2d");
}
window.onload = initialize;
var i;
function drawLevy(xa,ya,xb,yb,i) {
if(i == 0) {
ctx.beginPath();
ctx.moveTo(xa,ya);
ctx.lineTo(xb,yb);
ctx.closePath();
ctx.stroke();
}
else {
xc = (xa + xb)/2 + (yb - ya)/2;
yc = (ya + yb)/2 - (xb - xa)/2;
drawLevy(xa,ya,xc,yc,i-1);
drawLevy(xc,yc,xb,yb,i-1);
}
}
Для 0- и 1-итерации все работает отлично, в первом случае отрисовывается прямая, во втором отрезок "надламывается" и отрисовываются новые два. Однако, если итераций больше 1, то очередной рекурсивный вызов функции берет неверные начальные координаты отрезка и строит ложный отрезок.
Возможно я неправильно передаю параметры в функцию, при вызове изнутри? Подскажите, пожалуйста.