是否有一个更快的替代余弦/正弦函数?



我真的很纠结于javascript的正弦和余弦函数是多么缓慢和低效。我正在用p5.js webgl制作一款第一人称射击游戏,这确实造成了大量的延迟。

谁能告诉我如何找到一个角只有一个的正弦/余弦?或者至少告诉我一个更有效的方法?

所以从字面上看,我试图重新创建Math.cosMath.sin函数,只是简单地运行更快。

如果你的度数只是0-359范围内的整型度数,你可以在数组中缓存sin/cos的结果,其中度数是数组的索引:

const pi180 = (Math.PI/180);
const angles =[...new Array(360).fill(0)].map((_,i) => ({
cos: Math.cos(i * pi180),
sin: Math.sin(i * pi180)
}));
console.log(angles);

例如,如果你想要cos 32度它会是angles[32].cos

使用弧度很难做到这一点,因为你处理的是浮点值,你需要一种方法来截断或插值值之间。


关于您认为cos/sine是您的瓶颈的简短评论:这不太可能。更有可能的是,你在不必要的时候不断调用数学函数。检查你的代码,确保你只在事情发生变化时才计算,而不是在动画的每个关键帧上计算,并且你只使代码中实际发生变化的部分无效。

相关内容

  • 没有找到相关文章

最新更新