Para que nuestra aplicación basada en OpenGL funcione de una forma correcta, robusta, tolerante y eficiente tenemos que tratar listas de puntos que supuestamente definen polígonos tridimensionales de la siguiente manera:
Salvo la última, todas las operaciones se pueden realizar en un tiempo de ejecución lineal en el número de esquinas del polígono.
Para l@s interesad@s: se ha desarrollado también un algoritmo que realiza la subdivisión de un polígono simple pero no-convexo en triángulos que se ejecuta en tiempo lineal en el número de esquinas del polígono. Los polígonos no-simples siempre necesitan más tiempo de cálculo, porque pueden tener muchas regiones que haya que tratar.
Además: las operaciones no salen del espacio de los números racionales, que es una propiedad muy importante en el ámbito de la geometría algorítmica, ya dijimos antes: si se trabaja con los flotantes de los procesadores, muchas veces la tarea se convierte en una verdadera aventura, o mejor dicho, una verdadera pesadilla si la meta es hacer algo bién hecho.
Antes de inventar la rueda por quinta vez, usamos la librería Leda que nos proporciona las estructuras de datos básicos.