Комментарии 5
Мне кажется, там нужно не смещать узел вдоль вектора нормали на заданную величину, а находить точку пересечения прямых, параллельных ребрам, но отстоящих от них на заданную величину. Например, для вот такого треугольника с узкой выемкой
{x: 0.3, y: 0.7},
{x: 0.7, y: 0.7},
{x: 0.51, y: 0.3},
{x: 0.51, y: 0.65},
{x: 0.49, y: 0.65},
{x: 0.49, y:0.3},
{x: 0.3, y:0.7}
видно, что вдоль сторон треугольника ширина обводки меньше, чем у основания.
Интересная статья. Но ваш алгоритм на выходе может выдать результат с самопересечением для контуров с "петельками" радиусом менее отступа.
Вообще, эта тема хорошо представлена по ключевым словам "Offset curve".
Кажется вот эту либу https://www.npmjs.com/package/polygon-offset я использовал для этого успешно.
Рабтает ли ваш алгоритм с объектам типа бука О или В ?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как сделать внешнюю обводку у полигона