То, что большинство людей предложили в этой теме, это «взять все точки / ребра одного многоугольника и сравнить с каждой точкой / ребрами другого». Это, вероятно, будет работать нормально, если все, что вы делаете, это сравниваете два довольно простых полигона и если вы не слишком заинтересованы в том, чтобы делать это быстро.
Однако, если вы хотите довольно простой и лучший метод. Используйте, как предложил Бен Фойгт, метод квадратичной оптимизации (т. Е. Квадратичное программирование ). По сути, ваши полигоны - это ваш набор линейных ограничений, т. Е. Точка решения должна лежать к внутренней стороне каждого ребра полигона (это ограничение неравенства). А ваша функция затрат для оптимизации - это просто евклидово расстояние, то есть Q в стандартной формулировке - это просто матрица тождеств. Однажды приведя в качестве такой проблемы, вы можете либо использовать библиотеку, которая решает эту проблему (их много), либо вы можете изучить ее из книги и свернуть свой собственный код (это довольно простой алгоритм для кодирования ).
Если вам нужен реальный метод для этого, например, если этот простой тест от полигона к полигону является первым шагом к более сложным трехмерным фигурам (например, сплошному телу из полигонов). Тогда вам, скорее всего, следует просто использовать пакет, который уже делает это. Здесь - это набор библиотек обнаружения столкновений, многие из которых выводят глубину проникновения или, что эквивалентно, минимальное расстояние.