Я хотел бы сделать очень простое фрактальное дерево (для учебных целей) с помощью JS. Я использовал следующий код, который я получил из статьи в Википедии. Это здорово, только я хочу, чтобы ширина линии уменьшалась с каждой итерацией. Как вы можете видеть, я попробовал context.lineWidth = context.lineWidth - 1, но это не работает. Есть ли у кого-нибудь идеи о том, как это может быть достигнуто?Простое фрактальное дерево JS/html5 с уменьшающейся шириной линии
var elem = document.getElementById('canvas');
var context = elem.getContext('2d');
context.fillStyle = '#000';
context.lineWidth = 20;
var deg_to_rad = Math.PI/180.0;
var depth = 9;
function drawLine(x1, y1, x2, y2){
context.moveTo(x1, y1);
context.lineTo(x2, y2);
context.lineWidth = context.lineWidth - 1;
}
function drawTree(x1, y1, angle, depth){
if (depth != 0){
var x2 = x1 + (Math.cos(angle * deg_to_rad) * depth * 10.0);
var y2 = y1 + (Math.sin(angle * deg_to_rad) * depth * 10.0);
drawLine(x1, y1, x2, y2);
drawTree(x2, y2, angle - 20, depth - 1);
drawTree(x2, y2, angle + 20, depth - 1);
}
}
context.beginPath();
drawTree(300, 500, -90, depth);
context.closePath();
context.stroke();
Было бы замечательно, если бы был способ сделать это в несколько этапов, так что, когда я нажимаю на кнопку, он добавляет новую ветку. Во всяком случае, ваш совет будет очень признателен.
Не могли бы вы добавить демо/jsfiddle? – Afsa
"* но это не работает *" - не помогает. Похоже, вы после чего-то вроде [этого] (https://developer.mozilla.org/samples/canvas-tutorial/4_5_canvas_linewidth.html). – James