Context free
Martes, 5 de julio de 2005Context Free, es el típico programa de verano: simple, no sirve para nada, pero te pasas un monton de horas enganchado. Bien podian haberlo llamado Georgie Damm Soft.
El programa consiste en una ventana partida en dos. A la izquierda se introduce un codigo (muy elemental) y a la derecha se muestra la imagen resultante de renderizar las lineas. Con un poco de tiento podemos realizar figuras muy complejas, fractales, basados en dos primitivas simples: cuadrado y circulo (SQUARE , CIRCLE). La gracia consiste en generar formas recursivas (infinitas a la que te descuidas).
No he conseguido encontrar una lista completa de la sintaxis utilizada, pero creo haberla descubierto ya toda: SQUARE, CIRCLE, rotate, x (trasladar en eje X), y (trasladar en eje Y), size, brightness.
Un mini-tuto rapidillo:
El programa tiene 2 ordenes basicas: startshape nombre_de_la_regla y rule nombre_de_la_regla.
Para crear una linea bastaría deberiamos

startshape linearule linea {
SQUARE{} SQUARE {y 1}
SQUARE {y 2} SQUARE {y 3}
SQUARE {y 4} SQUARE {y 5}
SQUARE {y 6} SQUARE {y 7}
SQUARE {y 8} SQUARE {y 9}
}
Esto crea 9 cuadrados y los situa en y=0, y=1, y=2, etc…
startshape ejecuta la regla llamada “linea”.
A continuación creamos otra regla que llame a regla llamada “linea” tres veces, y rote cada elemento 120 grados. A esta nueva regla la llamaremos aspa, por lo que tenemos que cambiar la llamada de startshape a aspa, así:

startshape asparule aspa {
linea {r 120}
linea {r 240}
linea {r 360}
}
rule linea {
SQUARE{} SQUARE {y 1}
SQUARE {y 2} SQUARE {y 3}
SQUARE {y 4} SQUARE {y 5}
SQUARE {y 6} SQUARE {y 7}
SQUARE {y 8} SQUARE {y 9}
}
Ya tenemos creado nuestro constructor base.
¿y si ahora metemos en la regla linea una llamada a la regla aspa?
Pues si no tenemos la precaución de añadirle una propiedad SIZE creariamos un bonito bucle-sin-fin, pero si le ponemos s 0.55 (s = size) tal que así:
startshape asparule aspa{
linea {r 120}
linea {r 240}
linea {r 360}
}
rule linea {
SQUARE{}
SQUARE {y 1}
SQUARE {y 2}
SQUARE {y 3}
SQUARE {y 4}
SQUARE {y 5}
SQUARE {y 6}
SQUARE {y 7}
SQUARE {y 8}
SQUARE {y 9}
aspa{s 0.55 y 9.55 b 0.1}
}
Generaría algo como esto:

32790 cuadraditos formando un fractal

Añadiendo una rotación de 30 grados a la ultima linea.

Un helecho (codigo)
4 comentarios
Escrito por Trebol-A
archivado en las categorias Tecnologia
Compartir:
Twitter,
Meneame,
FaceBook,
Identica


Comentarios
muy lindas imágenes! De paso, con el google mapas, la costa de australia es bastante fractalosa.
Vaya Sr. Juan Pablo, le tenía perdido por el mar de blogs!!
Bienhallado de nuevo (aunque seguro que fuí yo el que se perdió con tanto cambio de blogspot & co.)
no ha sido el único, nunca tuve que haberme ido! (igual yo seguía pasando por acá)
Perdiendo el tiempo en internet me encontré con este lugar y gané!, son interesantes los temas que publican y los comentarios, además alguien que es capaz de fabricarse un fractal debe valer la pena. los visitaré de nuevo
Deja tu comentario