代码之家  ›  专栏  ›  技术社区  ›  VVK

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

  •  1
  • VVK  · 技术社区  · 7 年前

    我有一个任意多行(xy点系列),从(0,0)开始。 任务是以这种方式重新计算所有位置,以便最后一个点位于预定义的边(Y值)。请参见图。

    illustration

    有什么算法可以做到吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   MBo    7 年前

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

    fie =  Atan2(ye, xe)
    

    从原点到THA点的距离为

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

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

    fiw = Arcsin(yw / len)
    

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

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