Español   Ejemplos: Nubes de puntos

El triángulo de Sierpinski

Esta "curva" aparece tras dibujar muchos puntos. La tortuga empieza en el centro del triángulo, elige al azar uno de los vértices del triángulo, avanza la mitad de la distancia que hay entre su posición actual y el vértice y dibuja un punto. A continuación, elige otro vértice, avanza media distancia y .... El proceso se repite 10000 veces.

Sorprendentemente, aparece un patrón reconocible.

para empezar
# Inicializamos la pantalla, el lapiz, la tortuga
  reponetodo pontamañopantalla [400 400]
  poncolorpapel negro poncolorlapiz verde subelapiz ocultatortuga
#
  repite 10000 [sier] # repite 10000 veces
fin

para sier
  haz "vertice elige [ [190 -180] [-190 -180] [0 160] ] # elige vertice
  ponrumbo hacia :vertice # gira hacia el vertice
  avanza (distancia :vertice)/2 # avanza medio lado hacia vertice
  bajalapiz avanza 0 subelapiz # dibuja pixel
fin

Triángulo de Sierpinski mejorado

En este ejemplo, la curva se colorea (intenta entender cómo se elige el color). Esta curva no se dibuja como la anterior, sino que los puntos se dibujan a partir de dos variables X y Y.

para empezar
# Inicializamos la pantalla, el lapiz, la tortuga
  reponetodo pontamañopantalla [400 400]
  poncolorpapel negro poncolorlapiz verde subelapiz ocultatortuga
#
  haz "xcor 0 haz "ycor 0 # inicializamos xcor e ycor a 0
  repite 10000 [sier] # repite 10000 veces
fin

para sier
  haz "vertice azar 3 # elige vertice
  si :vertice=0
   [dibuja 190 cambiasigno 180 poncolorlapiz 2]
  si :vertice=1
   [dibuja (-190) (-180) poncolorlapiz 3]
  si :vertice=2
   [dibuja 0 160 poncolorlapiz 5]
fin

para dibuja :xp :yp
  haz "xcor (:xcor+:xp)/2
  haz "ycor (:ycor+:yp)/2
  ponxy :xcor :ycor bajalapiz avanza 0 subelapiz # dibuja pixel
fin


El triángulo generalizado

Podemos reescribir el programa para permitir cualquier orden de la curva de Sierpinski, y trazarla sobre triángulos, cuadrados, ... Sólo hay que indicar el orden en el Comando de Inicio, por ejemplo:

empezar 3

empezar 6

empezar 11


para empezar :orden
# Inicializamos la pantalla, el lapiz, la tortuga
  reponetodo pontamañopantalla [400 400]
  poncolorpapel negro poncolorlapiz verde
  subelapiz ocultatortuga
#
  haz "lado (:orden-2)*180
  haz "frac 1/(:orden-1)
  haz "ang 360/:orden
  repite 10000 # repite 10000 veces
   [sier :orden :lado :frac :ang]
fin

para sier :orden :lado :frac :ang
  haz "angulo :ang*(azar :orden) # elige vertice
  ponx :frac * ((primero posicion) +:lado*seno :angulo)
  pony :frac * ((ultimo posicion) +:lado*coseno :angulo)
  bajalapiz avanza 0 subelapiz # dibuja pixel
fin
Probar este programa ahora

Procedimiento a ejecutar:
empezar