Draw отступ для выпуклой оболочки Java
1 ответ
Что бы я попытался создать контур, смещенный от многоугольника на расстояние d:
- Рассмотрим отрезок прямой линии между каждой парой последовательных точек (исходный выпуклый корпус).
- Сместите каждый сегмент на d вдоль его перпендикуляра к внешней стороне. Смещенные сегменты имеют промежутки между концами.
- Для каждой пары последовательных смещенных отрезков линии добавьте отрезок окружности так, чтобы оба отрезка были его касательными; его радиус должен быть d. Это легко сделать: нарисовать перпендикуляры на концах обоих отрезков; их пересечение является центром круга.
Теперь у вас есть последовательность перемежающихся прямых и дуг. Это должен быть контур, который вы ищете.
Для комфортной работы вам понадобятся следующие функции:
- Найти уравнение прямой по двум точкам (сохранить его как объект с 3 полями с плавающей запятой);
- Найти уравнение перпендикулярной линии по уравнению линии и точке;
- Найти точку пересечения двух прямых, учитывая их уравнения.