Geom 0.0.6

Una semana después, Geom 0.0.6 ha sido liberado.

De hecho no me tardé tanto con esta versión; un par de días en la tarde nada más. Pero lo que le incluí es, creo, fabuloso: extensiones en Python. Con ellas de verdad se vuelve extensible el programa (valga la rebuznancia).

La cosa es que, una vez logré ver cómo llamár los métodos de Python desde C para los plugins, me di cuenta que era exactamente lo que necesitaba para las restricciones de las construcciones (que por cierto, el llamar métodos de Python desde C es relativamente sencillo, si bien no lo he visto documentado en ningún lado… tal vez debería hacerlo yo… si no tuviera cosas que hacer).

Lo padre de esto es que cualquiera puede extender Geom sin necesidad de saber nada de C, y realmente muy poquito de Python (yo mismo no sé mucho). Y lo puede hacer aventando un par de archivos en un directorio de su $HOME, sin necesidad de recompilar nada.

Sólo para probar qué cosas se podían hacer, escribí tres extensiones que están incluidas en esta versión. La primera genera Kn (esto es, la gráfica completa de n vértices) poniendo los vértices sobre un círculo. No tiene nada de especial; de hecho ya se podía hacer (fácilmente además) desde la consola de Python. Lo bonito es que diseñé un método para que el usuario le pueda pasar información a una extensión (n en este caso); en este momento sólo se pueden pasar enteros y flotantes (y cadenas, que no tengo idea si tenga sentido), pero ya con eso se pueden hacer bastantes cosas. Vean el screencast para darse una idea.

Extensión Kn

Extensión Kn

Hay versiones en AVI en la sección de screencasts del sitio de Geom.

Después hice polígonos regulares. Este tampoco tiene nada de interesante (aunque también le pide al usuario el número de lados); lo interesante es que el polígono regular se puede guardar y volver a abrir, y la restricción sigue funcionando.

Extensión polígono regular

Extensión polígono regular

Después, y entusiasmado por una discusión que tuve con Omar, escribí una extensión que permite calcular el casco convexo de un conjunto de puntos. Esta extensión no pide entrada al usuario; pero sí deben estar seleccionados los puntos a los cuales se les quiere calcular el casco convexo (igual que en el polígono regular, por cierto).

Extensión casco convexo

Extensión casco convexo

Lo bonito es que por supuesto el casco convexo se conserva aunque movamos los puntos. Es bastante rápido, de hecho, me sorprendió que corriera tan bien en mi laptop (no se ve muy ágil en el video, pero es que ya calcular el casco convexo todo el tiempo y además estár encodeando a Ogg/Theora sí le pesa a mi maquinita).

Y ya teniendo el algoritmo de Graham Scan implementado, pues de una vez hice un plugin que explica cómo funciona con palos y bolitas.

Graham Scan plugin

Graham Scan plugin

Lo cual está padre, porque usando Geom se pueden explicar muy bien muchos algoritmos de Geometría Computacional. (Y también ayuda programarlos, por cierto).

Pero ahora sí considero agotado el tiempo que le podía haber dado a Geom mientras estoy en California; la cantidad de chamba ha crecido a pasos agigantados (razón por la cual no he escrito casi nada en el blog), y mi escritura de la tesis va bastante bien, creo yo. A lo más le haré pequeñas correcciones al programa cuando las necesite (sigo pensando usarlo para la mayor parte de mis gráficas), pero no creo volver a sacar una nueva versión hasta que vuelva a México.

Eso sí, se aceptan parches. O plugins. O extensiones.

O un API de Python bonito.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *