Поворот нескольких линий (серий точек) в соответствии с областью

У меня есть произвольная мультилиния (серия точек XY), начинающаяся с (0, 0). Задача состоит в том, чтобы пересчитать все позиции таким образом, чтобы последняя точка лежала на заданном ребре (значение Y). См. иллюстрацию.

иллюстрация

Есть ли какой-то алгоритм, как это сделать?


person VVK    schedule 24.05.2018    source источник


Ответы (1)


Если последняя точка имеет координаты (xe, ye), то угол направления от начала до этой точки равен

fie =  Atan2(ye, xe)

Расстояние от начала до точки равно

len = Sqrt(ye*ye + xe*xe)

Требуемая позиция по оси Y равна yw, поэтому угол направления равен

fiw = Arcsin(yw / len)

Поэтому вам нужно повернуть все точки на разность углов

dfi = fiw - fie  = Arcsin(yw / len) - Atan2(ye, xe)
person MBo    schedule 24.05.2018
comment
Ваше здоровье! Это то что мне нужно. - person VVK; 24.05.2018