function lerp(start, end, amt) {
return (1-amt)*start+amt*end
}
这个 lerp 函数与坐标完美配合。我可以轻松地将 X 从 1 调整到 10。
但当涉及轮换时就会出现问题。物体的旋转以弧度为单位。它可以是从 -3.14 到 3.14。那么让我们旋转我们的对象。从0开始,某一时刻旋转会达到3.14,然后...-3.14。因此,当从 3.14 调整到 -3.14 时,对象会进行一次完整的 360° 旋转(3.14, 2, 1, 0, -1, -2, -3.14),这并不好。那么,有人能告诉我如何调整轮换吗?
我正在使用 JavaScript。
最佳答案
老实说,我不记得这是如何运作的。但是,它确实有效。
它在我的代码中处理玩家对象的 lerping 旋转以指向鼠标,当指针 Angular 穿过 -3.14 到 3.14 时,此函数正确计算跨越间隙的 lerp。带着,嗯,魔法。
function rLerp (A, B, w){
let CS = (1-w)*Math.cos(A) + w*Math.cos(B);
let SN = (1-w)*Math.sin(A) + w*Math.sin(B);
return Math.atan2(SN,CS);
}
关于javascript - JS |如何以弧度为单位旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63970781/