Historia
He estado bastante tiempo pensando en hacer este árbol fractal aleatorio, pero "nunca tenía tiempo".
@jeroyang ha se ha adelantado publicando una idea parecida (https://makerworld.com/en/models/513889), así que me he animado a programar mi visión de árbol fractal.
En mi caso, he optado por permitir que la máquina "tome sus decisiones" generando ramas de forma aleatoria en varios aspectos:
- Ángulo de las ramas. Ángulo de inclinación de cada rama con respecto a su base. Ángulo entre dos valores min/max.
- Número de ramas. Ramificaciones en cada nivel. Número de ramas entre dos valores min/max
Explicación
Se dibuja el tronco
Se llama a la función branches() para iniciar el proceso de dibujado de ramas
Si la profundidad es menos que 1, se continúa
Se mueve el plano de trabajo al final de la rama anterior
Se obtiene el número de ramas en este nivel, de forma aleatoria
Se obtiene un angulo aleatorio para la inclinación de las ramas
Cálculo de ángulo de rotación según el número de ramas, para completar una vuelta completa. 360º/ramas
Bucle. El contenido se ejecutara una vez por cada rama
Rotado hasta el punto inicial de cada rama
Creación de cada rama
Llamada recursiva al método generador de ramas
En cada rama del nivel inicial, se dibuja esa rama, se realiza la llamada recursiva y se calculan las ramas hijas
Para cada rama hija se repite el proceso, hasta alcanzar la profundidad máxima.
#######################################################
History
I have spent quite some time thinking about making this random fractal tree, but I “never had the time.”
@jeroyang has published a similar idea (https://makerworld.com/en/models/513889), which inspired me to program my vision of a fractal tree.
In my case, I decided to let the machine "make its own decisions" by generating branches randomly in several aspects:
- Branch angle. Inclination angle of each branch relative to its base. Angle between two min/max values.
- Number of branches. Branching at each level. Number of branches between two min/max values.
Explanation
The trunk is drawn
The branches() function is called to start the branch drawing process
If the depth is less than 1, the process continues
The workspace is moved to the end of the previous branch
The number of branches at this level is obtained randomly
A random angle for the inclination of the branches is obtained
The rotation angle is calculated based on the number of branches to complete a full circle. 360º/branches
Loop. The content is executed once for each branch
Rotated to the starting point of each branch
Creation of each branch
Recursive call to the branch generating method
At each branch of the initial level, that branch is drawn, the recursive call is made, and the child branches are calculated
For each child branch, the process is repeated until the maximum depth is reached