繁体   English   中英

在JavaScript中的Math.abs

[英]Math.abs in javascript

我对math.abs()感到困惑。 我通过互联网进行了研究,但没有找到与这个弹跳球的动画有任何关系。 我想知道这是如何工作的,以及在使用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++;
}

我确实评论了让我困惑的一句话。 任何人请让我知道这个动画这个功能有多重要。

小提琴

dx是x上的位移。

Math.abs(dx)是x上的绝对速度,即没有符号的值,总是正数或空值。

if (Math.abs(dx) < 0.01) {

本来可以写成

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

基本上,如果它已经很慢,那么这条带有下面一条的线就会沿着x停止。

每次满足最后一个条件时,dx减少1%( if (y + dy > 290 || y + dy < 0) {

这个计算可以永远进行,但会产生锯齿状的结果,因为与dx相比,浮点精度误差会成为一个很大的因素,所以当它已经很慢时停止球弹跳这就是使用Math-abs进行的测试。 用英语你可以读

if (Math.abs(dx) < 0.01) 

if the speed of the ball in the x direction is less than 0.01 then stop the ball

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM