¿Cómo determino eficientemente si un polígono es convexo, no convexo o complejo?

Desde la página del manual paraXFillPolygon:

Sishape esComplejo, el camino puede auto intersectarse. Tenga en cuenta que los puntos coincidentes contiguos en la ruta no se tratan como auto-intersección.

Sishape esConvexo, por cada par de puntos dentro del polígono, el segmento de línea que los conecta no intersecta la ruta. Si es conocido por el cliente, especificandoConvexo Puede mejorar el rendimiento. Si especificasConvexo para una ruta que no es convexa, los resultados gráficos no están definidos.

Sishape esNo convexo, el camino no se auto-intersecta, pero la forma no es totalmente convexa. Si es conocido por el cliente, especificandoNo convexo en lugar deComplejo Puede mejorar el rendimiento. Si especificasNo convexo para una ruta de auto intersección, los resultados gráficos no están definidos.

Tengo problemas de rendimiento con el rellenoXFillPolygon y, como sugiere la página del manual, el primer paso que quiero dar es especificar la forma correcta del polígono. Actualmente estoy usandoComplejo para estar seguros.

¿Existe un algoritmo eficiente para determinar si un polígono (definido por una serie de coordenadas) es convexo, no convexo o complejo?

Respuestas a la pregunta(10)

Su respuesta a la pregunta