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)
JuanPablo
#1/ 06 de July/2005 a 16:10:03
Otros comentarios de «JuanPablo»
muy lindas imágenes! De paso, con el google mapas, la costa de australia es bastante fractalosa.
Trebol-A
#2/ 07 de July/2005 a 17:35:49
Otros comentarios de «Trebol-A»
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.)
JuanPablo
#3/ 07 de July/2005 a 18:30:27
Otros comentarios de «JuanPablo»
no ha sido el único, nunca tuve que haberme ido! (igual yo seguía pasando por acá)
Jorge
#4/ 06 de June/2008 a 19:15:45
Otros comentarios de «Jorge»
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
22 de December, 2024 @ 18:35