cosine/sine 函数有更快的替代方法吗?

Is there a faster alternative to cosine/sine function?

我真的在为 javascript 正弦和余弦函数的低效而苦恼。我正在用 p5.js webgl 制作第一人称射击游戏,它确实造成了大量的延迟。

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

所以从字面上看,我正在尝试重新创建 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);

例如,如果您想要 32 度的余弦值,它将是 angles[32].cos

使用弧度很难做到这一点,因为您正在处理浮点值,并且您需要一种方法来截断或在值之间进行插值。


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