Создание стен. Часть 1. Создание эквидистант.
9+ Для построения стен заданной толщины по заданной полилинии необходимо определение эквидистант к этой линии. Основной задачей построения эквидистант является нахождения точек в углах линии – пересечений эквидистант. Для каждой точки полилинии определяем внутреннюю и внешнюю точку эквидистанты и добавляем их в соответствующие массивы Определение внутренней точки происходит следующим образом Первое – определяем вектора, компланарные линиям, выходящим из данной точки, для это производим вычитание векторов вершин и нормализуем им для получение единичного вектора. второе – определяем угол между ними точка эквидистанты всегда лежит на биссектрисе угла, поэтому угол делим пополам затем определяем гипотенузу в треугольнике, образованном половиной толщины стены и полилинией. Обозначим ее bisectorLength получим вектор, выходящий из вершины в точку b поворотом вектора leftSide на угол alfa все, что нам остается – это перенести точку B по полученному вектору. Для этого умножим его на скаляр – длину полученного отрезка bisectorLength и произведём сложение вектора вершины угла и полученного вектора. построение конечных точек незамкнутых линий осуществляет подобным образом, только угол всегда одинаков const angle = 3 * Math.PI / 4; Обработка конечных точек полилинии происходит следующим образом Полный код можно увидеть здесь https://jsfiddle.net/Dragon3DGraff/w5pufk04/10/ 9+
Читать далее