From b9c22554dc48fc87caf3fa132d9065f03c28a594 Mon Sep 17 00:00:00 2001 From: djmil Date: Sun, 23 Jun 2024 12:09:42 +0200 Subject: [PATCH] better readability yeah, for the personal historical reasons, i will leave these Ukrainian code comments untranslated :) --- tree.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tree.js b/tree.js index 670f973..53736e1 100644 --- a/tree.js +++ b/tree.js @@ -1,33 +1,34 @@ -const balance_angle = angle => angle * (Math.PI / 180) +const angle2rad = angle => angle * (Math.PI / 180) const stem = (ctx, x1, y1, length, angle) => { - // Визначити координати кіня стовбура знаючи почткову точку стовбура, його довжину та кут нахилу. Так, це тригонометрія в дії :) - const balanced_angle = balance_angle(angle) - let x2 = x1 + length * Math.sin(balanced_angle); - let y2 = y1 - length * Math.cos(balanced_angle); + // Визначити координати кіня стовбура знаючи почткову точку стовбура, його довжину та кут нахилу + // Так, це тригонометрія в дії :) + const alpha = angle2rad(angle) + let x2 = x1 + length * Math.sin(alpha); + let y2 = y1 - length * Math.cos(alpha); ctx.beginPath(); ctx.moveTo(x1, y1); ctx.lineTo(x2, y2); - ctx.lineWidth=length/10; // товщина стовбура залежить від його довжини + ctx.lineWidth=length / 10; // Товщина стовбура залежить від його довжини ctx.stroke(); ctx.closePath(); // Закоментуй цей IF. Що змінилось в картинці дерева? Чому стало гірше? if (length > 20) { - x2 = x1 + (length * 0.95) * Math.sin(balanced_angle); - y2 = y1 - (length * 0.95) * Math.cos(balanced_angle); + x2 = x1 + (length * 0.95) * Math.sin(alpha); + y2 = y1 - (length * 0.95) * Math.cos(alpha); } if (length > 1) { const rnd1 = Math.random() *20 -10; // [-10.0 .. +10.0] const rnd2 = Math.random() *0.2 +0.6; // [ 0.6 .. 0.8] - // Малюємо розгалудження стовбура. За початок нового стовбура використовується кінець поточного стовбура + // Рекурсивно малюємо розгалудження стовбура + // В якості початку нового стовбура використовується кінець поточного стовбура stem(ctx, x2, y2, length * rnd2, angle + 35 +rnd1); stem(ctx, x2, y2, length * rnd2, angle - 25 +rnd1); } } const tree = (ctx, x, y, height) => stem(ctx, x, y, height, 0); -