旋转多线(点系列)以匹配区域
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)
我有一条从 (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)