Lo que la mayoría de la gente ha propuesto en este hilo es "tomar todos los puntos/bordes de un polígono y compararlos con cada punto/borde del otro". Esto probablemente funcionará bien si todo lo que haces es comparar dos polígonos bastante simples y si no estás demasiado preocupado con hacer esto rápidamente.
Sin embargo, si desea un método bastante fácil y mejor. Utilice, como lo sugiere Ben Voigt, un método de optimización cuadrático (es decir, Quadratic Programming). Básicamente, sus polígonos son su conjunto de restricciones lineales, es decir, su punto de solución debe estar hacia el lado interno de cada borde de su polígono (eso es una restricción de desigualdad). Y su función de costo para optimizar es solo la distancia euclidiana, es decir, la Q en la formulación estándar es solo la matriz de identidad. Una vez emitido como un problema así, puede usar una biblioteca que resuelva esto (hay muchos de esos por ahí), o puede estudiarlo desde un libro y rodar su propio código (es un algoritmo bastante fácil de codificar)
Si desea un método real para hacer esto, por ejemplo, si esa simple prueba de polígono a polígono es el primer paso hacia formas 3D más complejas (como un sólido hecho de polígonos). Entonces, lo más probable es que solo uses un paquete que ya lo haga. Here es un conjunto de bibliotecas de detección de colisiones, muchas de las cuales tienen una profundidad de penetración o, lo que es equivalente, una distancia mínima.
¿Está buscando la distancia entre sus centroides o la distancia entre sus dos bordes más cercanos? –
Dos bordes más cercanos. – Dmi
Entonces, ¿no es la distancia entre los dos puntos más cercanos? ¿Cómo se define el "borde más cercano" y, dada una definición adecuada, cómo se define la distancia entre los dos bordes más cercanos? – Troubadour