首页 > 解决方案 > JS | 如何以弧度表示旋转?

问题描述

function lerp(start, end, amt) {
    return (1-amt)*start+amt*end
}

这个 lerp 函数与坐标完美配合。我可以轻松地将 X 从 1 调整到 10。
但是在旋转方面会出现问题。物体的旋转以弧度为单位。它可以从 -3.14 到 3.14。所以让我们旋转我们的对象。从0开始,一瞬间旋转到3.14,然后……-3.14。所以当 lerping 从 3.14 到 -3.14 时,物体会进行一个完整的 360º 旋转,(3.14, 2, 1, 0, -1, -2, -3.14),这是不好的。那么,任何人都可以告诉,如何 lerp 轮换?
我正在使用 JavaScript。

标签: javascriptmathrotationradianslerp

解决方案


老实说,我不记得这是如何工作的。但是,它有效。

它在我的代码中处理玩家对象的 lerp 旋转以指向鼠标,当指针角度穿过 -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);
}

推荐阅读