cannon物理引擎,线性阻尼的注意事项

2楼有说明
即linearDamping的值不能超过1
在js中pow(x,y),如果x为负数,y则不能为double,否则返回NaN,在14669行,linearDamping的值如果大于1必将导致负数,各位老铁注意踩坑

1赞

在引擎的cannon.js的第14669行

  for(i=0; i!==N; i++){
        var bi = bodies[i];
        if(bi.type & DYNAMIC){ // Only for dynamic bodies
            var ld = pow(1.0 - bi.linearDamping,dt);
            var v = bi.velocity;
            v.mult(ld,v);
            var av = bi.angularVelocity;
            if(av){
                var ad = pow(1.0 - bi.angularDamping,dt);
                av.mult(ad,av);
            }
        }
    }

pow(1.0 - bi.linearDamping,dt);

JavaScript 内部使用双精度浮点数运算。相关运算遵循 [IEEE 754 标准]。IEEE 754 规定了 pow(x, y) 运算在 x 为 finite(即不是正负无穷大和NaN)且 x < 0,而 y 是 finite 且不是整数时,返回 NaN

而说明文档对此没有说明

通过阻尼

刚体组件提供了 linearDampingangularDamping 属性,分别用于设置线性和旋转的阻尼。 阻尼参数的范围可以在 0 到无穷之间, 0 意味着没有阻尼,无穷意味着满阻尼。

为什么删帖了呢

已去除并作补充说明,linearDamping的值如果大于1必将导致负数,因为dt必是double。
但阻力不够大的话,还达不到我当前开发想要的效果,正在犯愁

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。