Prueba de intersección de cuadro delimitador alineado con objetos 2D


9

Tengo dos cuadros delimitadores alineados con objetos (es decir, sin ejes alineados, giran con el objeto). Me gustaría saber si dos cuadros alineados con objetos se superponen. ( Editar: nota: estoy usando una prueba de recuadro delimitador alineado con el eje para descartar rápidamente objetos distantes, por lo que no importa si la rutina quad es un poco más lenta ) .

Mis cajas se almacenan como cuatro puntos x, y. He buscado respuestas, pero no puedo entender los nombres de las variables y los algoritmos en los ejemplos para aplicarlos a mi caso particular.

¿Puede alguien ayudarme a mostrarme cómo se haría esto, de una manera clara y simple? Gracias. (El lenguaje particular no es importante, el pseudocódigo de estilo C está bien).

Respuestas:


5

Si sabes dónde mirar es fácil. Estás buscando oobb. Vaya aquí: http://www.realtimerendering.com/intersections.html .
Allí encontrará un enlace a este sitio http://www.geometrictools.com/LibMathematics/Intersection/Intersection.html
y allí encontrará el código correcto. (ctrl + f "Intersección de cajas (2D)")

Utiliza SAT y contiene códigos fuente y artículos.


El algoritmo descrito por las herramientas geométricas es el que habría señalado.
Jari Komppa

Entiendo que esto fue hace 4 años, pero siempre explique un voto negativo y todo eso. Esto es bastante "Tu respuesta está en otro castillo", y ahora la respuesta ni siquiera parece estar allí en el segundo caso.
Yann

2

La forma más fácil es probablemente probar cada vértice de la casilla B contra cada lado de la casilla A (calcular la distancia firmada). De esta manera, puede clasificar cada vértice como "delante" o "detrás" del segmento.

Si todos los vértices de B se clasifican como "delante" de uno de los segmentos de A, B y A no se superponen; de lo contrario, lo hacen.

Esto es algo complicado, por lo que puede obtener algo de ganancia de rendimiento haciendo primero una verificación círculo-círculo, usando los círculos delimitadores de los cuadrados (trivial para calcular)


Primero estoy haciendo una prueba de recuadro delimitador alineado con el eje para descartar rápidamente objetos distantes ... ¿Tienes más detalles sobre la prueba quad-quad?
AshleysBrain

Gire temporalmente ambos quads con la misma transformación de modo que uno de ellos termine alineado con el eje ... luego use la prueba SAT como se menciona anteriormente. cuando se encuentra el resultado, invierta la rotación para recuperarlos.
Steve H
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.