Ответ 1
См. http://www.geometrictools.com/Source/ComputationalGeometry.html
В разделе "Поле минимальной площади" представлены различные примеры.
Итак, скажем, у меня есть список из N пар положительных длинных координат (точек).
Как найти самый маленький прямоугольник, содержащий все из них?
Прямоугольник может также иметь плавающие координаты и поворачиваться под любым углом и далее уменьшаться... Не только X, Y, Ширина и Высота!
Я уже знаю, как найти наименьший многоугольник или не повернутый прямоугольник, но это не то, что мне нужно... Я хочу знать, как найти произвольно ориентированную минимальную ограничительную рамку.
См. http://www.geometrictools.com/Source/ComputationalGeometry.html
В разделе "Поле минимальной площади" представлены различные примеры.
Эта страница wikipedia отмечает, что вы можете решить эту проблему, используя тот факт, что минимальный прямоугольник должен иметь ребро, коллинеарное с одним из ребер выпуклой оболочки.
Возможно, эта статья может помочь: Наименьшая k-точка, окружающая прямоугольник произвольной ориентации
Я не знаю, поможет ли это вам, но вот мои мысли о том, как я подхожу к проблеме.
Вам понадобятся функции, чтобы найти ваши "самые угловые" точки (в вашем примере, 2 и 2 справа). Учитывая эти 4 точки, соедините их с линиями.
(Обратите внимание, что в изображении вашего примера верхняя точка не будет содержать сгенерированный прямоугольник, поэтому...) Затем вам понадобится функция, чтобы определить, содержит ли прямоугольник все указанные точки; если нет, расширьте конечные точки (в данном случае верхние 2 точки сформированного прямоугольника) на N (который является либо одной мерой... скажем, пикселем, либо если вы умны, то расстояние до точки, границ плюс/минус один, зависящий от направления) и переоценить.