Español   Ejemplos: Fractales.

Curva de Sierpinski

Estamos acostumbrados a ver la curva de Sierpinski sobre un triángulo. Vamos a dibujarla rellenando un cuadrado.

para empezar :orden
  nuevo :orden #
  ponxy -:dist/2 (- (:dist/2-(:lado / raizcuadrada 2)))
  poncolorlapiz verde bajalapiz
  repite 4
    [ sierpinski :orden 1
      giraderecha 45 avanza :lado giraderecha 45]
  subelapiz centro
  poncolorlapiz rojooscuro bajalapiz rellena # rellenamos la curva
fin

para nuevo :orden
# Inicializamos papel, lapiz y tortuga
  reponetodo pontamañopantalla [400 400]
  poncolorpapel negro poncolorlapiz verde
  subelapiz ocultatortuga
#
  haz "lado 112 / potencia (raizcuadrada 2) :orden # variable global
  haz "d potencia 2 truncar (1+0.5*(:orden+1))
  haz "h potencia 2 truncar (1+0.5*(:orden)) haz "h :h-1
  haz "dist (:h*:lado) + (:d * (:lado / raizcuadrada 2))
fin

para sierpinski :orden :paridad
  si :orden < 1 [avanza :lado alto] # o sea, si = 0
  giraderecha :paridad*45
  sierpinski :orden-1 cambiasigno :paridad
  giraizquierda :paridad*45 avanza :lado
  giraizquierda :paridad*45
  sierpinski :orden-1 cambiasigno :paridad
  giraderecha :paridad*45
fin


Una animación para crear las curvas de Sierpinski de orden 0 a 10:

para empieza
  repitepara [orden 0 10]
   [ nuevo :orden animacion
    ponxy -:dist/2 (-(:dist/2-(:lado / raizcuadrada 2)))
    poncolorlapiz verde bajalapiz
    repite 4
   [ sierpinski :orden 1
      giraderecha 45 avanza :lado giraderecha 45]
      subelapiz centro poncolorlapiz rojooscuro bajalapiz rellena
      refrescar espera 80 subelapiz centro]
  detieneanimacion
fin
Probar este programa ahora

Procedimiento a ejecutar:
empezar 6