Como hacer un arbol con fractales

Como hacer un arbol con fractales

Advertencia si comienzas a jugar con fractales, puede volverse adictivo. No sé por qué, pero es estúpidamente divertido hacer estas cosas

En realidad, comencé a mirar fractales como parte del desafío #TeamTrees , un proyecto para recaudar suficiente dinero para 2020 para plantar 20 millones de árboles. (¡Hicimos nuestro objetivo!)

¿Qué tienen que ver los fractales con los árboles? Espera, un paso a la vez. Te mostraré cómo crear un árbol usando un fractal, pero primero desviaremos un poco el concepto de recursión.

¿Qué es la recursividad? Permítame explicarlo con un ejemplo: suponga que desea encontrar los factores primos de un número n . Di n = 12. Bueno, puedes hacer eso en tu cabeza. 2 x 2 x 3 = 12, y esos son todos números primos. Pero, ¿y si n = 1,234,533? Para eso, necesitas un método. Aquí hay una receta para generar los factores primos de cualquier número:

Dividir n entre 2: si no hay resto, escriba 2 como factor. Restablecer n = el resultado de la división (n / 2)

Repita el paso anterior en el nuevo número: Continúe hasta que la división por 2 produzca un resto y Ahora aumenta el divisor en 1 (entonces, 2 + 1 = 3)

Divide el nuevo número entre 3: si no queda ningún resto, escribe 3 como factor ...

Y así. Siga ciclando a través de esta rutina básica, ajustando n en cada paso y aumentando el divisor, hasta que el resultado de la división sea inferior a 2, entonces ya ha terminado

1 GlowScript 2.9 VPython

2 #this is the function

3 def pfact(n):

4 if n>1:

5 i=2

6 while n % i !=0:

7 i=i+1

8 print(i)

9 #function calling itself

10 pfact(n/i)

11 #change this number for fun.

12 pfact(1234533)

Haga clic en el botón Reproducir para ejecutarlo. Huh Resulta que los factores primos de 1,234,533 son 3, 79 y 5,209. Acabo de elegir ese número al azar, por lo que es genial que tenga un factor primo tan alto. También puede ejecutar el script en sus propios números locos; simplemente haga clic en el ícono del lápiz y escriba algo en la línea 12.

De todos modos, lo que hay que notar aquí es cómo funciona: creé una función llamada "pfact" para realizar las operaciones, y la definición de la función en realidad se llama a sí misma (en la línea 11). Eso es recursividad. Al crear esa estructura anidada, podemos hacer cálculos elaborados con muy poco código. Es sorprendente que esto funcione.

Recursion en la naturaleza

Entonces, ¿qué pasa con los fractales? Los fractales son patrones que tienen la misma apariencia en diferentes escalas. Los encuentras en todas partes en la naturaleza. Mire una costa: está llena de bahías, ríos y penínsulas. Si amplía una sección pequeña, ¿es más suave? No, de cerca ves las mismas formas irregulares a menor escala.

Esta auto-similitud también se puede ver en los árboles. Si comienza desde el tronco y se mueve hacia arriba, se divide en varias partes: las denominamos ramas. Si sigue una de estas ramas, también se divide de una manera similar a la rama anterior. Cada rama del árbol tiene una forma de árbol más pequeña. Entonces un árbol es como un fractal. Eso significa que podemos modelar un árbol usando fractales.

Creo que estamos listos para un árbol fractal. Te mostraré cómo hacer este fractal con GlowScript Python . Por supuesto que hay otras opciones. ¿Tal vez prefieres hacerlo con Python y Turtle? Aquí hay un buen tutorial para eso.

Aquí está el plan básico para este árbol fractal:

  • Comience en algún punto y muévase una cierta distancia en una determinada dirección.
  • En ese punto, haz una rama. Gire un ángulo hacia la derecha y luego repita el paso anterior con una distancia más corta. (¡Recursión!)
  • Ahora regresa y gira a la izquierda para hacer la otra rama. (La recursión de nuevo.)

Una nota rápida sobre vectores y cilindros. Como cada rama es un cilindro en tres dimensiones, hay algunas partes del código que pueden ser confusas. Cuando crea un cilindro en GlowScript Python, necesita dos cosas: una posición inicial (un vector en el espacio 3D) y otro vector que apunta desde el principio hasta el final del cilindro. En el código, este vector señalador es la variable a: es este vector que se rota en cada ramificación.

Ramificando

Suficiente sobre vectores, ¡hagamos cosas geniales! ¿Qué pasa si quiero hacer que mi árbol se parezca más a un árbol? Aquí hay algunas cosas que puedo cambiar:

  • En lugar de acortar ramas sucesivas en una longitud dada, puedo acortarlas proporcionalmente, digamos en un 25 por ciento en cada iteración.
  • Puedo hacer que el grosor de las ramas sea proporcional a su longitud.
  • Puedo hacer que las partes más pequeñas sean verdes y las partes más grandes marrones.

¡Pero espera! Ese árbol tiene solo dos dimensiones. ¿Qué pasa con un árbol tridimensional? ¿Qué pasa con un árbol con algo de aleatoriedad? Sí, ambas cosas harían árboles de mejor aspecto (más realistas), pero te lo dejaré como tarea.

¿Los árboles fractales son solo por diversión? Bueno, si lo fueran, ¿y qué? La diversión es buena Probablemente así fue como se hizo el primer fractal. Pero en realidad tienen usos reales. Uno es en animación digital. Supongamos que estás haciendo una escena del bosque en una película CGI. ¿Dibujas (a) cada árbol individualmente? (b) dibujar un árbol y reproducirlo? o (c) usa una computadora para generar árboles fractales? Fractales!

Hay otro uso súper asombroso: estimar la cantidad de dióxido de carbono que absorben los árboles. La idea básica es medir los patrones de ramificación de un árbol en particular (la distancia entre las ramas y los cambios de ancho). De esto, obtienes las "reglas" para la estructura de árbol en lugar de medir todo el árbol. Una vez que sepa cómo se podría construir el árbol con estas reglas de ramificación fractal, eso le dará las propiedades de todo el árbol. Creo que eso es genial.

Fecha actualización el 2021-01-06. Fecha publicación el 2020-01-06. Categoría: web Autor: Oscar olg Mapa del sitio Fuente: wired Version movil