Digamos que tenemos una forma irregular:
Y dos criaturas moviéndose a lo largo de su contorno.
Luego suavizamos la forma completamente tirando de las esquinas.
Obtenemos esto:
Es fácil ver ahora que Orange está moviendo CW y verde CCW. ¿Cómo puedo saber en qué dirección se mueven sin suavizar la forma?
Nueva imagen
Respuestas:
Dibuja una línea hasta el infinito y cuenta cuántas veces cruzas la forma (par o impar), sin contar el segmento donde se encuentra la criatura. Luego verifica si la criatura va a la izquierda o derecha de esa línea.
En este ejemplo, cruzamos la forma dos veces (de manera uniforme) y nos dirigimos hacia la izquierda. El resultado es inmediato de esta tabla:
En pseudocódigo:
fuente
Depende de la información que tenga disponible de su estructura de datos de forma, pero una criatura que mueve CW a lo largo del contorno de una forma siempre tendrá el interior de la forma a su derecha, y una criatura que mueve CCW tendrá el interior de la forma en está a la izquierda.
fuente
fuente
Necesita saber en qué dirección se define el polígono, en qué dirección lo rodean los vértices.
Si no sabe esto, puede resolverlo calculando el área del polígono:
El signo del resultado (positivo o negativo) le dirá si es en sentido horario o antihorario. Debe probar esto para ver en qué dirección es para usted porque depende de su sistema de coordenadas.
Si la forma es en sentido horario:
Si la forma es en sentido antihorario:
fuente
Parece que Trevor ya cubrió esta pregunta, pero aquí está mi solución:
calcule el área que cubre su forma, lo que significa
usando el área calculada como se indica arriba, puede determinar fácilmente si la forma en sí es en sentido horario o no. es en sentido horario solo si el área está por debajo de cero.
verifique si los objetos se mueven de la misma manera que los vértices están en orden o en la dirección opuesta.
fuente