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

以纵横比旋转2D矢量

  •  2
  • TheTrueJard  · 技术社区  · 6 年前

    我们中的许多人都熟悉在给定角度下绕原点旋转二维矢量的方法 theta :

    newX = x * cos(theta) - y * sin(theta);
    newY = x * sin(theta) + y * cos(theta);
    

    我现在尝试在图像UV空间中旋转坐标,如下所示:

    UV Space

    (图像借用自 this 所以,请提问。)

    u 轴比那些轴宽 v

    newX = (x * cos(theta) * Aspect - y * sin(theta)) / Aspect;
    newY = x * sin(theta) * Aspect + y * cos(theta);
    

    如有任何帮助,请提前感谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   PilouPili    6 年前

    旋转和纵横比的一般版本为:

    (center yu c,center yu y)是旋转的中心

    (纵横比

    tmp_x = (x-center_x)/aspect_x
    tmp_y = (y-center_y)/aspect_y
    tmp_x = tmp_x * cos(theta) - tmp_y * sin(theta)
    tmp_x = tmp_x * sin(theta) + tmp_y * cos(theta)
    new_x = aspect_x*tmp_x-center_x
    new_y = aspect_y*tmp_x-center_y
    

    希望有帮助。