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:

 

Pluma

 

…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:

Pluma rotación 1º

Pluma rotación 3º

Pluma rotación 9º

Pluma rotación 20º

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)

ContextFree

¡Buena suerte a todos los que lo intenten, y espero me hagan llegar sus progresos!

 

 

Anuncios