旋转多线(点系列)以匹配区域

Rotate multi line (series of points) to match region

我有一条从 (0, 0) 开始的任意多线(一系列 XY 点)。 任务是以这种方式重新计算所有位置,因此最后一个点将位于预定义的边缘(Y 值)上。见插图。

有什么算法可以做到吗?

如果最后一个点的坐标为(xe, ye),则原点到该点的方向角为

fie =  Atan2(ye, xe)

从原点到那个点的距离是

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

想要的 y 位置是 yw,所以方向角是

fiw = Arcsin(yw / len)

所以你需要rotate所有点的角度差

dfi = fiw - fie  = Arcsin(yw / len) - Atan2(ye, xe)