Español   Ejemplos: Fractales.

La curva "dragón"

La conocida curva "dragón" fue descubierta por el físico John E. Heighway. Se puede reproducir la curva doblando una tira de papel larga en dos varias veces y después desplegándola, pero dejando los pliegues formando un ángulo de 90 grados. El resultado recuerda ligeramente a un dragón, de ahí su nombre.

N pliegues determinan una curva de dragón de orden N, con 2N segmentos, es decir, la complejidad de esta curva crece exponencialmente. Una curva dragón no se intersecta a sí misma nunca, y es una lía que rellena el plano.

Fractal generado recursivamente

La tortuga dibuja la curva desde un extremo al otro girando a derecha e izquierda según lo necesite. El procedimento dragon se llama recursivamente, con una paridad positiva (+1) o negativa (-1), lo que determina si el giro es hacia la derecha o la izquierda de :angulo grados.
Una curva de dragón de orden 0 es una línea recta.
El límite para esta curva es el orden 13 (8192 segmentos), cuando las líneas son demasiado pequeñas. (longitud 2).

para empezar :orden
  nuevo
  inicializar :orden leyenda :orden
  ponposicion [-108 0] poncolorlapiz verde bajalapiz
  giraderecha (45 *:orden)+90 # orientaciones similares de las curvas
  dragon :orden 1
fin

para nuevo
# Inicializamos papel, lapiz y tortuga
  reponetodo pontamañopantalla [400 400] poncalidaddibujo 1
  poncolorpapel negro poncolorlapiz verde subelapiz ocultatortuga
fin

para inicializar :orden
# haz tam y angulo variables globales
  haz "tam 11*potencia (raizcuadrada 2) (9-:orden)
  haz "angulo 90
fin

para leyenda :orden
# Muestra encabezado y nivel de curva
  poncolorlapiz blanco
  ponposicion [-190 184] rotula frase [Curva dragon de nivel] :orden
fin

para dragon :orden :paridad
  si :orden < 1 [avanza :tam alto] # o sea, si = 0
  dragon :orden-1 1
  giraizquierda :paridad*:angulo # giraizquierda o giraderecha :angulo grados
  dragon :orden-1 cambiasigno 1
fin


Para una animación de las curvas de dragón de orden 0 a 11:

para empieza
  nuevo animacion
  repitepara [orden 0 11] [
  limpia # Comenta este "limpia" para ver las curvas superpuestas
  inicializar :orden leyenda :orden
  ponposicion [-108 0]
  poncolorlapiz 1 + resto :orden 2 bajalapiz # rojo o verde
  giraderecha (45 *:orden)+90 # orientaciones similares de las curvas
  dragon :orden-1
  refrescar espera 80 subelapiz centro]
  detieneanimacion
fin


Podemos mostrar cuatro curvas dragón superpuestas usando el modo multi-tortuga:

para empieza :orden
  nuevo inicializar :orden leyenda :orden
  repitepara [tortuga 1 4]
   [ pontortuga :tortuga poncolorlapiz :tortuga
     bajalapiz
     giraderecha (:tortuga * 90) + (45 *:orden)+45
     dragon :orden-1 espera 40]
fin

para inicializar :orden
# hacemos tam y angulo globales
  haz "tam 9*potencia (rc 2) (9-:orden)
  haz "angulo 90
fin


Probar este programa ahora

Procedimiento a ejecutar:
empezar 7