在循环范围tween.js的最短方向上补间

时间:2018-07-19 13:29:37

标签: tween.js

我有两个葡萄干。范围是0到6.28319。 当我拿A时,我想使其过渡到B。我希望它走最短的距离。 例子。

如果A为1且B为5。 1,.9,.8,.7,.6,.5,.4,.3,.2,.1,0,6.18 ...依此类推,直到达到5。

有任何想法如何使用Tween.js并实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

无法弄清楚,但就我而言,这可行。因为如果超出范围,则退出。

可以做到

A是1 B是5 //目标

1 + 6.28319 = 7.28319 因此它将从7.28319开始并补间到5。我不在我的范围内,但就我而言,可以选择此快捷方式是可以的,因为我正在使用three.js,并且它知道什么是7.28319。

let azimuthalRad = ((controls.getAzimuthalAngle() % 6.28319) + 6.28319) % 6.28319; //A
let goalYawRad = THREE.Math.degToRad(trackObjects[trackCount - 1].yaw + 30); //B
let startTweenRad = 0;
if (azimuthalRad <= goalYawRad) {
    if (goalYawRad - azimuthalRad <= Math.abs(goalYawRad - (azimuthalRad + 6.28319))) {
        startTweenRad = azimuthalRad;
    }
    else {
        startTweenRad = (azimuthalRad + 6.28319);
    }
}
else {
    if (azimuthalRad - goalYawRad <= Math.abs(goalYawRad - (azimuthalRad - 6.28319))) {
        startTweenRad = azimuthalRad;
    }
    else {
        startTweenRad = azimuthalRad - 6.28319;
    }
}