在Javascript中计算弧度的正确方法
The correct way to calculate Radians in Javascript?
我有这个小提琴 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
。
顺便说一句,在单个值上调用min
或max
甚至没有意义。而且您不会通过致电Math.max(paddle_y)
来获得paddle_x
位置.
相关文章:
- object.仅冻结对象方法.JavaScript
- 快速方法 Javascript/Jquery/etc 检索表单中包含的所有 aspnet:textbox (input)
- 查看整个画布是否被涂成一种颜色的方法.Javascript + processing.js
- 从方法 JavaScript 访问对象变量
- pop()方法javascript没有给出完整的输出
- 如何格式化setInterval方法JavaScript的运行时间
- 正则表达式/替换方法Javascript
- 将vars传递给其他方法javascript
- 寻找一种简化if/else语句的方法.javascript
- focus()或select()方法javascript,在Chrome中性能缓慢
- 未捕获的类型错误:对象没有方法..Javascript
- 对象方法javascript中的方法/函数
- 构造函数中的私有方法(Javascript,坏主意?)
- 查看数组是否有数组的最简单方法?Javascript
- 扁平化数组元素(不是整个数组)的有效方法JavaScript
- 最常用的生成PDF报告的方法(JavaScript,node.js)
- 创建多维数组与地图方法:javascript
- 对象方法Javascript HTML DOM中的多个事件监听器
- 卡住了.adddeventlistener不能在属性内处理我的方法.Javascript
- 任何获取文档选择的x、y、w、h的方法(JavaScript)