计算2D平面上的旋转相对位置

时间:2014-08-11 13:18:49

标签: javascript math rotation 2d

对于游戏项目,我需要计算2D平面上相对于相机的项目位置。

相机可以旋转,它的坐标指的是它的中心。

image01 image02

在附加的图片中,ab是要显示的项目,c是相机。 第一张图片是世界上物品的绝对位置。 第二张图片是我想要的结果。

请注意旋转不必是90度,它可以是任何有效角度。我只用了90度来保持这个例子的简单。

通常这是一项简单的任务,但由于相机可以旋转,因此转换到中心并不容易,这会使这个问题变得复杂。

这不是使用canvas元素,因此不能选择使用画布平移或旋转。

以下是此示例中使用的数据,以及用于尝试解决方案的一些样板代码:

var items = {
    a: {x: 3, y: 3},
    b: {x: 2, y: 4}
};

var camera = {
    x: 4, y: 4,
    width: 4, height: 4,
    rotation: 90
}

boilerplate code on jsfiddle.net

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您应该执行以下步骤来实现结果

  1. Translate原点C
  2. Rotation matrix
  3. 旋转您的积分
  4. 将原点返回原位
  5. 此时,你的物品和相机已经旋转,剩下的唯一工作就是按相机矩形裁剪。

    据我所知,这样的剪辑不是很难,可以轻松完成。

    希望它可以帮到你