• gnulinux

Hermite, Bézier, B-Spline y cacaos mentales

January 27, 2013

Continúo estudiando por los sistemas CAD y los métodos de definición de curvas, para entender un poco mejor como funcionan estos he abierto el primer programa de CAD que tenía a mano en Ubuntu, el FreeCAD, un programa muy orientado al diseño 3D, tipo Inventor, Solid Works, etc.

Empiezo yendo al escenario Draft y viendo que tenemos aquí, enseguida encuentro como hacer una B-Spline, pincho unos cuantos puntos y me sale esto:

[caption id=“attachment_1004” align=“alignright” width=“604”]Una B-Spline según FreeCAD Una B-Spline según FreeCAD[/caption]

¡Sorpresa! Lo que debería ser una curva de aproximación es en realidad una curva de interpolación. Como vemos, todos los puntos de definición pasan por la curva, realmente es una curva de Hermite, posiblemente una Spline cúbica natural. Además la curva es poco editable, sólo es posible eliminar y rehacer los puntos y además se producen fallos hacerlo, total, muy poco intuitivo.

Paso entonces a otro programa, el LibreCAD, más enfocado a diseño 2D, por ejemplo planos o bocetos. Enseguida encuentro la opción Spline, que no dice mucho sobre cómo va a ser la curva. Hago unos cuantos puntos y me encuentro con lo siguiente:

[caption id=“attachment_1006” align=“alignright” width=“650”]Spline en LibreCAD Spline en LibreCAD[/caption] Lo que podemos observar en esta “Spline” es que concretamente es una Bézier, el primer y ultimo punto coinciden con la curva y los puntos intermedios se aproximan a ella. Es muy sencillo esta vez editar el polígono de control para modificar la curva a nuestro gusto. Conclusiones, los programadores de herramientas CAD libre deberían ser más descriptivos en sus nombres y saber realmente que están haciendo, probablemente por estos detalles el CAD libre no acaba de arrancar mientras que por ejemplo las herramientas de diseño gráfico y artístico sí que están a la altura, podemos poner los ya conocidos ejemplos de Blender, Inkscape y Gimp. Los algoritmos están ahí, ya escritos, pero es necesario recopilarlos e integrarlos en una sola herramienta que sea sencilla de utilizar y no tenga errores.


Profile picture

Carlos Sanmartín Bustos

Desarrollador de software embebido comprometido con el software libre. Progresista y antiautoritario.