The Hitchhiker Pythonits’s Guide to the Galaxy

Esta vez haremos el descabellado intento de plotear una galaxia espiral morfológicamente mas o menos correcta, para esto haremos uso/abuso de Python seguido de sus secuaces Scipy y Mayavi. Utilizando hasta el cansancio funciones lambda, mapeos y filtros entre otros yuyos.

Para seguir adelante tenemos que refrescar que es un Automata Celular y para que servían las Coordenadas Polares .

El código se puede ver ACA al ser un poco mas extenso que los anteriores dejo el link a github.

Y se vería algo asi …

El pase de diapositivas requiere JavaScript.

Anuncios

Conjunto de Cantor con Python/Mayavi

Reutilizando el código anterior con mínimas modificaciones tenemos como resultado el Conjunto de Cantor (http://es.wikipedia.org/wiki/Conjunto_de_Cantor).

Solo colocaré la parte modifcada del código anterior, no se olviden de importar mayavi!


def generar(self, nivel, cursor, distancia):
    if nivel == 0:
       a = (cursor.x, cursor.x, cursor.x)
       b = (cursor.x + distancia*np.cos(cursor.ang),
            cursor.y + distancia*np.sin(cursor.ang))
       mlab.points3d(a, a, a, colormap="copper", scale_factor=.25)
       
       cursor.x = b[0]
       cursor.y = b[1]
    else:
       print "nivel = ", nivel
       for i in self.gramatica[self.inicial]:
           if i == 'A':
              self.generar(nivel-1, cursor, distancia/3.0)
           elif i == 'B':
              cursor.x += 3*distancia

if __name__ == "__main__":
     miSistema = SistemaL(gramatica = {'A':"ABA", 'B':"BBB"},
                          inicial = 'A',distancia = 1, nivel = 5)
     miSistema.iniciar()
     miSistema.generar(miSistema.nivel, miSistema.cursor, miSistema.distancia)
     print "termine con todos los niveles"
     mlab.show()

Y así quedaría …

El pase de diapositivas requiere JavaScript.

btw: puede haber quedado algo residual del anterior problema 🙂