【发布时间】:2014-10-04 08:07:37
【问题描述】:
对于一个游戏项目,我需要计算物品在 2D 平面上相对于相机的位置。
相机可以旋转,坐标以中心为中心。
在附图中,a 和 b 是要显示的项目,c 是相机。
第一张图片是世界上物品的绝对位置。
第二张图片是我想要得到的结果。
请注意,旋转不一定是 90 度,它可以是任何有效的角度。我只是使用 90 度来保持这个例子的简单。
通常这是一项简单的任务,但由于相机可以旋转,所以平移到中心或从中心平移并不是那么容易,而且它使这个问题变得复杂。
这不是使用画布元素,因此不能使用画布平移或旋转。
以下是本示例中使用的数据,以及一些用于尝试解决方案的样板代码:
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
任何帮助将不胜感激。
【问题讨论】:
-
请把你的图片换成大一点的,内容很难看
-
相机的宽高是什么意思?是透视吗?我无法理解你的问题!
-
图片替换为放大的。
-
相机的宽度和高度对于最终位置很重要。在最终图像中,A 为 (1,3)。但是(1,3)从哪里来?视图的左上角,计算方法是从相机中心减去宽度/2 和高度/2(当它不旋转时)。听起来很简单,但是当相机可以旋转 37 度时,就很难了。
-
在Math site on Stack Exchange network上提问不是更好吗?
标签: javascript math rotation 2d