旋转矢量而不使用三角函数
Rotating a vector without the use of trigonometric functions
假设在一个不容易使用三角函数的环境中,或者我出于某种原因不想使用它们。有没有可能使矢量旋转一个单位角而不带cos/sin?
可以预先计算旋转矩阵。但这听起来不像是你想要的。
唯一简单的方法是实现您自己的三角函数。为什么不能用三角函数呢?
我晚了10年,但如果有人有类似的问题,让我分享我的小技巧工作半径小,多达16个角度。你不能用它做复杂的旋转,但它也适用于《Pong》、《Breakout》和《Asteroids》等游戏。它是整型的,没有三角函数。
技巧很简单。你所需要做的就是把圆分成4个象限,然后就明白了
假设我在右上象限。如果我移动…1像素右,是0度角。…1像素向上是90度角…右1像素,上1像素是45度…右2像素左1像素是22.5度…右1像素,上2像素是67.5度
就是这样了。通过改变每个象限的符号,您可以生成简单的路径在每一个角上。这些路径在2像素后会重复,所以如果你在计算从当前位置开始的下一个位置,它是一个线性运动(比如乒乓球),然后你可以很容易地计算下一个位置使用这个逻辑。
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 子轴围绕父轴而不是他自己的轴旋转
- 将使用太多的纹理插值器 - 带旋转的着色器
- CUDA三角函数中的数学保证
- SFML 向下移动时如何围绕屏幕中心旋转?
- 如何在OpenGL中正确旋转和缩放对象?
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 按时间自动旋转形状,同时在 OpenGL 中使用C++移动它们
- 如何使用增强::几何计算多边形的旋转固体体积?
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 旋转矢量而不使用三角函数