Cuaderno de Campo

Apuntes, Ideas y Observaciones

Context free

5 de July, 2005

Context 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)

Más apuntes anteriores



Cuaderno de campo es un blog mantenido por Trebol-a y en el que escriben Trebol-a, Miguel y Mónica
Si quieres saber algo más sobre los autores acude a la página acerca-de, si quieres contactar con alguno de nosotros hazlo a través de contactar

Creative Commons: Todo el contenido de la web (imágenes, textos, vídeos, a excepción de aquellas obras de otros autores enlazados por Cuaderno de Campo) se acoge a los términos expresados en la licencia Creative Commons