旋转矢量而不使用三角函数

Rotating a vector without the use of trigonometric functions

本文关键字:三角函数 旋转      更新时间:2023-10-16

假设在一个不容易使用三角函数的环境中,或者我出于某种原因不想使用它们。有没有可能使矢量旋转一个单位角而不带cos/sin?

可以预先计算旋转矩阵。但这听起来不像是你想要的。

唯一简单的方法是实现您自己的三角函数。为什么不能用三角函数呢?

我晚了10年,但如果有人有类似的问题,让我分享我的小技巧工作半径小,多达16个角度。你不能用它做复杂的旋转,但它也适用于《Pong》、《Breakout》和《Asteroids》等游戏。它是整型的,没有三角函数。

技巧很简单。你所需要做的就是把圆分成4个象限,然后就明白了

假设我在右上象限。如果我移动…1像素右,是0度角。…1像素向上是90度角…右1像素,上1像素是45度…右2像素左1像素是22.5度…右1像素,上2像素是67.5度

就是这样了。通过改变每个象限的符号,您可以生成简单的路径在每一个角上。这些路径在2像素后会重复,所以如果你在计算从当前位置开始的下一个位置,它是一个线性运动(比如乒乓球),然后你可以很容易地计算下一个位置使用这个逻辑。