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 旋转以指向鼠标,当指针角度穿过 -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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)