Supongamos que hay un número de polígonos convexos en un plano, quizás un mapa. Estos polígonos pueden chocar entre sí y compartir una ventaja, pero no se pueden superponer.¿Cómo puedo determinar si dos polígonos convexos se cruzan?
Para probar si dos polígonos P y Q de solapamiento, primero I pueden probar cada borde en P para ver si se cruza con cualquiera de los bordes en Q. Si se encuentra una intersección, declaro que se cruzan P y Q. Si ninguno se cruza, entonces tengo que probar para el caso que P está completamente contenida en Q, y viceversa. A continuación, está el caso de que P == Q. Finalmente, está el caso de compartir algunos bordes, pero no todos. (Estos dos últimos casos probablemente se puedan considerar como el mismo caso general, pero eso podría no ser importante.)
Tengo un algoritmo que detecta dónde se cruzan dos segmentos de línea. Si los dos segmentos son colineales, no se considera que se crucen para mis propósitos.
¿He enumerado correctamente los casos? ¿Alguna sugerencia para probar estos casos?
Tenga en cuenta que no estoy buscando el nuevo polígono convexo que es la intersección, solo quiero saber si existe una intersección. Hay muchos algoritmos bien documentados para encontrar la intersección, pero no necesito hacer todo el esfuerzo.
Tenga cuidado con los problemas de precisión de punto flotante al decidir la colinealidad de los segmentos de línea no verticales y no horizontales, si decide seguir por ese camino. –