У меня есть 2D многоугольники, вершины которых расположены в локальном пространстве многоугольников.Я пытаюсь вычислить новые вершины, которые будут образовывать ребро одинаковой длины внутри многоугольника.
В настоящее время для вычисления ребра я в основном сужаю исходные вершины.Для каждой вершины многоугольника я вычисляю отрицательный единичный вектор и умножаю его на постоянный коэффициент длины ребра.Затем я добавляю это к исходной вершине многоугольника.
Псевдокод: const float edgeLength = 0.5;
for each vertex v
vec2 n = -v.unit();
vec2 edgeVertex = v + n * edgeLength;
Результат отлично работает на правильных многоугольниках: снимок экрана 1
Однако в других многоугольниках, таких как прямоугольники, длины ребер не одинаковы: снимок экрана 2
Я пробовал много разных попыток, но пока ничего не работает, любая помощь будет принята с благодарностью, спасибо!(Пожалуйста, не обращайте внимания на то, что полигоны отображаются в 3D, фактические данные полигонов - 2D).