Draw отступ для выпуклой оболочки Java

Я уже получил набор точек, которые определяют эту выпуклую оболочку. Как я могу добавить к ним вид отступа, чтобы все точки были внутри? Я пытаюсь нарисовать красную линию

1 ответ

Что бы я попытался создать контур, смещенный от многоугольника на расстояние d:

  • Рассмотрим отрезок прямой линии между каждой парой последовательных точек (исходный выпуклый корпус).
  • Сместите каждый сегмент на d вдоль его перпендикуляра к внешней стороне. Смещенные сегменты имеют промежутки между концами.
  • Для каждой пары последовательных смещенных отрезков линии добавьте отрезок окружности так, чтобы оба отрезка были его касательными; его радиус должен быть d. Это легко сделать: нарисовать перпендикуляры на концах обоих отрезков; их пересечение является центром круга.

Теперь у вас есть последовательность перемежающихся прямых и дуг. Это должен быть контур, который вы ищете.

Для комфортной работы вам понадобятся следующие функции:

  • Найти уравнение прямой по двум точкам (сохранить его как объект с 3 полями с плавающей запятой);
  • Найти уравнение перпендикулярной линии по уравнению линии и точке;
  • Найти точку пересечения двух прямых, учитывая их уравнения.
Другие вопросы по тегам