javascript - 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。
解决方案
老实说,我不记得这是如何工作的。但是,它有效。
它在我的代码中处理玩家对象的 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);
}
推荐阅读
- c# - 什么是使用 async-await 的方法的 async-await-free 等价物?
- java - 如何将字符数组(char [])转换为字符串数组(String [])而不循环char数组并使用java中的预定义方法?
- javascript - 如何使用一些 Js lib 在 html 页面中播放或查看 .FBX 文件
- openstack - Magnum 集群创建
- dask - 带有pyarrow内存的dask read_parquet爆炸
- angular - Angular 5 - 如何根据表格中呈现的数据填充数据
- javascript - 将自动播放策略应用于 Chrome 嵌入式框架?
- go - Concurrent queue which returns channels, locking doubts
- ios - UICollectionview cellForItem return nil
- java - Jackson @JsonInclude(Include.ALWAYS) 所有孩子