我有两个葡萄干。范围是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并实现这一目标吗?
答案 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;
}
}