Español   Ejemplos: Recursividad

Cuadrados tipo mosaico

Este programa genera un fractal de cuadrados enlazados: cada cuadrado tiene otro más pequeño en cada uno de sus vértices.

El factor de reducción es dos, es decir, el lado de los cuadrados se reduce a la mitad y nunca llegan a tocarse entre sí. Si aplicamos un factor de reducción menor los cuadrados se superpondrán unos con otros, dando un aspecto "sucio" al dibujo.

Si cambiamos el factor actual por el número áureo (cambiando el 2 por 1.618034 y el lado a 96), hará que los nuevos cuadrados se dibujen justo a continuación de los originales lo que da, a nuestro parecer, un aspecto muy "limpio" al diseño.

para empezar :orden
  nuevo poncolorlapiz cyan
  haz "lado 96 # reemplaza 128 por 96 para razon aurea
  ponposicion lista cambiasigno :lado/2 cambiasigno :lado/2 giraizquierda 90
  repitecuadrado :orden :lado
fin

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

para repitecuadrado :orden :lado
  si :orden < 0 [alto]
  giraderecha 180
  repite 4 [
    pongrosor :orden+1 # comenta para lineas finas
    bajalapiz avanza :lado subelapiz
    giraizquierda 90 espera 1
    repitecuadrado :orden-1 :lado/1.618034]
# para razon aurea reemplaza 2 por 1.618034
  rellenacuadrado # comenta para no rellenar cuadrados
  giraizquierda 180
fin

para rellenacuadrado
  poncolorlapiz verdeoscuro
  giraizquierda 45 avanza 5 rellena
  retrocede 5 giraderecha 45
  poncolorlapiz cyan
fin


Probar este programa ahora

Procedimiento a ejecutar:
empezar 4