Asumimos un polígono bidimensional sin puntos múltiples consecutivos.
Un polígono es convexo siempre y cuando cumpla una de las siguientes condiciones:
Se puede comprobar formalmente que las tres condiciones son equivalentes.
La primera condición es difícil de comprobar programando, porque hay un número infinito de puntos en el interior de un polígono. La condición sirve más bién en comprobaciones matemáticas.
La segunda condición sí se puede programar. Resultaría en un algoritmo con tiempo de ejecución cuadrático en el número de esquinas, porque hay que hacer comprobaciones para cada segmento con casi todas las demás esquinas.
La tercera condición también se puede programar. La comprobación de los ángulos nos llevaría un tiempo lineal en el número n de esquinas. Sin embargo, necesitamos un tiempo en el orden n log n para comprobar si el polígono adicionalmente es simple (o cuadrático si nos conformamos con el algoritmo simple) como vimos arriba.
Pues, ¿hay algo mejor? (¿e incluso más sencillo de programar?)