Алгоритм увеличения полигона на заданную величину
Есть выпуклый полигон:
P - величина, на которую необходимо увеличить полигон (в мм).
L, L1, L2, H, H1 - управляющие величины (в мм).
Есть ли универсальный алгоритм увеличения подобных полигонов?
Может есть js-библиотеки?
Ответы (1 шт):
Автор решения: Kromster
→ Ссылка
Если у вас полигон задается точками (с координатами в 2D), то базовый алгоритм:
- находим центр полигона (тут нам помогает то, что он всегда выпуклый, по условию)
- перебираем все отрезки сторон и смещаем их точки "наружу" на
Р(т.е. считаем 2 нормали к стороне (у вас - всегда 90 градусов, т.е. просто меняем оси) и выбираем ту что смотрит от центра) - смещение наружу считаем как противоположное от направления к центру и двигаем по нормали к отрезку
- после смещения, для всех соседних отрезков ищем новые точки пересечения (продолжаем прямые)
По окончании, можете восстановить свои "управляющие" величины.
