在Javascript中计算弧度的正确方法

The correct way to calculate Radians in Javascript?

本文关键字:方法 Javascript 计算      更新时间:2023-09-26

我有这个小提琴 http://jsfiddle.net/pp7oby62/。小提琴由一个桨游戏组成,在 80x10 传感器网格上的桨上将石头扔在桨上。函数notify_player有两个参数,它们为我提供了岩石和桨的位置。我的代码如下所示:

defender.start(
function notify_player(rocks, paddle_y) {
var rocks_x = Math.max(rocks);
var rocks_y = Math.min(rocks);
var paddle_x = Math.max(paddle_y);
var paddle_yp = Math.min(paddle_y);
var deltaY = rocks_y - paddle_yp;
var deltaX = rocks_x - paddle_x;
var angleInRadians = Math.atan2(deltaY, deltaX);
var angleRound=Math.round(angleInRadians);
// random plan
var moves = [];
for (var i = 0; i < 22; i++) {
    // -1, 0, 1 to move the fiddle up and down on the grid
    //moves.push( Math.floor(Math.random()*3) - 1 );
    if (angleInRadians >0) moves.push(-1);
    else if (angleInRadians < 0) moves.push(0, 1, -1);
}
     return moves;
}
);
移动

数组控制球拍上下移动。如您所见,我正在使用从两个参数中获得的信息来计算弧度角度。但是当我运行它时,当我给出条件循环说明角度为>0 或 <0 时,对桨的运动没有影响。但假设我说:

if(angleInRadians!==0)

桨移动。这怎么可能?

当我给出条件循环说明角度为>0 或 <0 时,对桨的运动没有影响。

这可能只是当anleInRadians为零时 - 你在那里有一个盲点。

但假设我说:if(angleInRadians!==0)桨移动。这怎么可能?

变量 angleInRadians 包含值 NaN 。它既不小于也不大于零,因为它不是一个数字 - 但它绝对不是零。是的,NaN的平等关系有点奇怪(它甚至不等于自己)。

你之所以在这里得到NaN,是因为你在做无效的数学运算。 rocks是一个对象数组(你真的应该记录和检查它),你不能调用Math.min.max

顺便说一句,在单个值上调用minmax甚至没有意义。而且您不会通过致电Math.max(paddle_y)来获得paddle_x位置.