在javascript中限制粒子的最大速度

时间:2014-03-25 14:23:35

标签: javascript

我正在做一个小项目,我有一些粒子我想要移动到目标位置而不超过最大速度,首先我试图单独加上X和Y速度,这导致两者的斜边能够超过最高速度,然后我记得我的数学课并尝试了这个:

    var totalVel = Math.sqrt(Math.pow(curVelocity[0],2) + Math.pow(curVelocity[1],2));
    if(totalVel > maxSpeed){
        //sin(θ) = Opposite / Hypotenuse
        var angle = Math.asin(curVelocity[1]/totalVel);
        var newHyp = maxSpeed;

        var newOp = Math.sin(angle)*newHyp;
        var newAdj = Math.sqrt(Math.pow(newHyp,2) - Math.pow(newOp,2));

        curVelocity[1] = newOp;
        curVelocity[0] = newAdj;
    }

(curVelocity是索引0为X且索引1为Y的数组) 这很好地适用于时间,另一次它远离目标,它试图到达..在Y平面上匹配它但在X平面中朝向整个错误的方向。我猜测它与使用math.sin有关,或许它不再适用于它的旅行方向,但我不知道哪里开始区分使用什么,或者这个想法是否正确。

我可以在this location here找到我正在谈论的实例,刷新页面将改变起始位置和目标位置,黑色圆圈是绿色圆圈是目标位置的粒子

0 个答案:

没有答案