Español   Ejemplos: Nubes de puntos

Simulación no apta para alérgicos

Una simulación de cómo el polvo que flota en el ambiente se deposita sobre una superficie. Una partícula de polvo se mueve al azar por el aire, con una cierta atracción hacia el centro de la pantalla. Si el polvo se acerca a otra mota, se pega a ella y deja de moverse.

Se genera entonces otra partícula en una posición aleatoria y flota libremente hasta que se acerca al grupo ya adherido. Se forma un patrón típico, en el que vemos cómo es en los extremos del agrupamiento donde más probablemente se adhieren las motas nuevas.

Se produce un "alargamiento" de dichos extremos de modo que, a medida que el polvo flota hacia el centro, las puntas tienden a bloquear el espacio tras de sí, y se observan áreas libres de polvo.

para empezar
# Inicializamos la pantalla, el lapiz, la tortuga
  reponetodo pontamañopantalla [400 400]
  poncolorpapel negro subelapiz ocultatortuga
  poncolorlapiz amarillo
#
# Dibujamos una mota de polvo "semilla"
  punto posicion
  haz "max 4
  polvo
fin

para polvo
  centro giraderecha azar 360 avanza :max haz "col 0
  mientras [:max < 182]
   [ mientras [:col = 0]
    [ poncolorlapiz negro punto posicion # borra punto previo
      ponrumbo hacia [ 0 0 ]
      giraizquierda 30 giraderecha azar 420 avanza 1
      haz "col vecinos?
      poncolorlapiz amarillo punto posicion]
    haz "maxnew 2 + distancia [ 0 0 ]
    si :maxnew > :max [ haz "max :maxnew]
    polvo ]
fin

para vecinos?
# Determina si los pixeles vecinos estan ocupados o no
# devuelve '1' si hay polvo vecino, '0' si no
  repitepara [i -1 1]
   [ repitepara [j -1 1]
    [ haz "r elemento 1 encuentracolor lista :i +
      elemento 1 posicion :j + elemento 2 posicion
      si :r = 255 [devuelve 1] ] ]
  devuelve 0
fin


Probar este programa ahora

Procedimiento a ejecutar:
empezar