Arbres créés avec les mathématiques de Dieu

Dieu qui a créé les arbres a utilisé un canevas 3D ainsi que les a remplis de casualité et de grande complexité, mais probablement sur l'algorithme qui de base pourrait être minimaliste le suivant

Dieu qui a créé les arbres a utilisé un canevas 3D ainsi que les a remplis de casualité et de grande complexité, mais probablement sur l'algorithme qui de base pourrait être minimaliste le suivant.

Étape 1 : si une branche est suffisamment longue, connecter deux branches à celle-ci : une à gauche et une à droite. Les deux nouvelles branches devraient être légèrement plus courtes que la branche principale.
Étape 2 : répéter l'étape 1 pour les deux nouvelles branches

Step 1: If a branch is long enough, attach two branches to it: one on the left, and one on the right. Both the new branches should be slightly shorter than their parent branch. Step 2: Repeat Step 1 for both the new branches

Voici le résultat de la vidéo….

Essayons de comprendre comment fonctionne le concept de récursivité pour dessiner l’arbre. Regardez la vidéo et reconstruisez le code que j'exécute.

 function draw(startX, startY, len, angle,branchWidth) { ctx.beginPath(); ctx.save(); ctx.translate(startX, startY); ctx.rotate(angle * Math.PI/180); ctx.moveTo(0, 0) ctx.strokeStyle = "darkgreen"; ctx.fillStyle = "green"; ctx.lineWidth = branchWidth; ctx.lineTo(0, -len); ctx.stroke(); if(len <7) { ctx.beginPath(); ctx.arc(0, -len, 5, 0, Math.PI/2); ctx.fill(); ctx.restore(); return; } draw(0, -len, len*0.8, angle-10,branchWidth*0.8); draw(0, -len, len*0.8,angle+10,branchWidth*0.8); ctx.restore() }

Si vous avez fait attention, la fonction draw appelle elle-même plusieurs fois et chaque fois que ses paramètres changent. La récursivité est la technique utilisée pour dessiner l’arbre.

Par récursivité, on entend simplement l'appel d'une fonction à l'intérieur de sa propre définition, ou en d'autres termes, une fonction est définie récursivement lorsqu'elle contient un référence (appel) à elle-même. À chaque appel, la « profondeur » du traitement augmente jusqu'à atteindre l'objectif, moment auquel la fonction retourne.

De nombreux langages de programmation offrent la possibilité de définir des fonctions ou des procédures récursives ; JavaScript est naturellement l'un d'entre eux. Faisons un exemple pour clarifier les choses, voyons une fonction banale (non récursive) pour calculer la somme de deux nombres :

12345 function somme(a,b){  return document.write(a + b);} 

Voyons maintenant le même exemple à travers une fonction récursive :

12345 function somme(a,b) {  return b > 0 ? somme(a + 1, b – 1) : document.write(a);}