javascript中的Math.abs

javascript中的Math.abs,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,我被数学搞糊涂了。 我通过互联网进行了研究,但找不到与这个弹跳球的动画有任何关系。我想知道它是如何工作的,以及在使用math.abs()函数后球是如何平滑反弹的 function bounce() { if (x + dx > 293 || x + dx < 0) { dx = -dx; } if (y >= 290) { y = 290; } if (y + dy > 290 || y + dy &

我被数学搞糊涂了。 我通过互联网进行了研究,但找不到与这个弹跳球的动画有任何关系。我想知道它是如何工作的,以及在使用math.abs()函数后球是如何平滑反弹的

function bounce() {
    if (x + dx > 293 || x + dx < 0) {
        dx = -dx;
    }
    if (y >= 290) {
        y = 290;
    }
    if (y + dy > 290 || y + dy < 0) {
        dx *= 0.99;
        dy = -dy;
    }
    //if (Math.abs(dx) < 0.01) {
       // dx = 0;
    }
    dy++;
}
函数bounce(){
如果(x+dx>293 | | x+dx<0){
dx=-dx;
}
如果(y>=290){
y=290;
}
如果(y+dy>290 | | y+dy<0){
dx*=0.99;
dy=-dy;
}
//如果(数学绝对值(dx)<0.01){
//dx=0;
}
dy++;
}
我确实对这句话发表了评论,这句话把我弄糊涂了。任何人都请让我知道这个功能对这个动画有多重要


dx
是x上的位移

Math.abs(dx)
是x上的绝对速度,即不带符号的值,始终为正或空

if (Math.abs(dx) < 0.01) {
if(数学abs(dx)<0.01){
可以写成

if (dx>-0.01 && dx < 0.01) {
if(dx>-0.01&&dx<0.01){

基本上,如果球已经慢了,这条线和下面的一条线将沿着
x
停止球。

dx在满足最后一个条件时减少1%(
如果(y+dy>290 | y+dy<0){

这种计算可以永远持续下去,但会产生参差不齐的结果,因为与dx相比,浮点精度误差将成为一个很大的因素,因此最好在球已经很慢时停止反弹,这就是使用Math abs进行测试的目的。在英语中,您可以阅读

if (Math.abs(dx) < 0.01) 
if(数学abs(dx)<0.01)

正如
如果球在x方向上的速度小于0.01,则停止球

你是在问这个函数到底做什么?或者为什么使用它?@Tom Walters:这个函数是如何工作的?