【发布时间】:2015-01-29 23:47:11
【问题描述】:
我想获得一个 360 度的角度...对于我的游戏,我需要知道玩家前进的方向...
这里的代码获得了正确的角度,但仅以 90 度为增量:(意思是,当我点击左上象限时,我得到的角度是 0 到 90 度...左下角是 0 到 -90 度等...)
var dY = this.pos.y-e.gameY; //opposite
var dX = this.pos.x-e.gameX; //adjacent
var dist = Math.sqrt((dY*dY)+(dX*dX)); //hypotenuse
var sin = dY/dist; //opposite over hypotenuse
var radians = Math.asin(sin);
var degrees = radians*(180/Math.PI); //convert from radians to degrees
this.calculatedAngle = degrees;
如何获得 360 度?
这是另一个例子:前两个代表问题...当我单击左上/下象限时,它会一直从 x 轴绘制一个直角三角形...
我需要它像下面的 2 张图片一样,它一直在周围绘制角度:
【问题讨论】:
-
您有任何数据可以用来证明您在所有 4 个象限中的计算吗?
-
您可以使用
dy和dx的符号来区分象限并相应地为您的结果添加偏移量。 -
@Xotic750 你什么意思?我只是在用户点击的地图上取点(e.gameX 或 e.gameY),然后获取到玩家当前位置的距离。橙子,我也不太明白你的意思
-
那么你的图表上的原点是 (0, 0) 吗?你所有的价值观都与那个起源有关吗?因此,播放器和点击的示例如 (1, 1)、(-1, 1)、(-1, -1) 和 (1, -1)。 IE。玩家可能在 (1, 1) 并在 (2, 2) 获得点击,或者玩家总是在 (0, 0) 并且点击其他地方?
-
@Xotic750 他们不是。它们只是玩家与屏幕上点击点的坐标。所以玩家可以在(200, 300),点击(400, 500),distX = 200, distY = 200
标签: javascript geometry angle