ContextFree: Dibujos a partir de gramáticas
Jueves, 10 Agosto 2006
Siento que el actual post traiga malos recuerdos a algunos de mis amigos y a cualquiera que haya cursado alguna vez la asignatura de Compiladores o similar, pero el siguiente programa, aunque no es nada nuevo y lleva tiempo en otros blogs o páginas de frikys en general
, es, cuanto menos, curioso; y me ha entretenido un rato.
Se trata, como su propio nombre trata de indicar, de un programa para, utilizando gramáticas libres de contexto, hacer dibujos basados en figuras primitivas (cuadrado, círculos y triángulos), deformándolas y repitiéndolas cuantas veces sea necesario para crear las figuras impresionantes que se pueden conseguir. Para muestra, un botón, aunque esta no tenga nada de increíble:

…y aquí el código que ha generado esta mini-prueba:
startshape feather
rule feather {
SQUARE { size 0.1 0.1 }
SQUARE { r -0.3 y 0.1 size 0.1 0.1 }
SQUARE { r -0.6 y 0.2 size 0.1 0.1 }
feather2 { r -0.9 y 0.3 }}
rule feather2 {
SQUARE { size 0.1 0.1 }// Rama izquierda
branch_left { y 0.025 r 70 s 0.4 }
branch_left { y -0.025 r 70 s 0.4 }// Rama derecha
branch_right { y 0.025 r -70 s 0.4 }
branch_right { y -0.025 r -70 s 0.4 }
feather2 { r -0.3 y 0.1 s 0.985 b 0.01 h 0.1 sat 0.05 }}
rule branch_left {
SQUARE { size 0.1 0.1 }
branch_left { r -1 y 0.1 s 0.97 b 0.01 }}
rule branch_right {
SQUARE { size 0.1 0.1 }
branch_right { r 1 y 0.1 s 0.97 b 0.01 }}
Lo mejor es que con pocos cambios se consiguen resultados sorprendentes. Pongo algunos ejemplos más de la misma imagen cambiando únicamente la rotación:




Finalmente, aquí tienen la dirección del programa, desde donde se lo podrán descargar y acceder a la galería (hay imágenes realmente increíbles)
¡Buena suerte a todos los que lo intenten, y espero me hagan llegar sus progresos!