没有三角函数的3D旋转?

Nat*_*oos 1 math vector

我正在开发三维旋转轴算法.我的意见是

  • 我正在旋转的轴,作为我中心点的矢量
  • 中心点(显然)
  • 我希望旋转的角度
  • 我现在的位置

我想知道是否有一种方法可以在没有三角函数的情况下做到这一点,只需使用向量运算.有没有人有潜在的解决方案?

编辑:有没有一种方法,我可以每次旋转π/ 4弧度(45度),而不是输入角度theta?这可能会简化一些事情,我不知道.

eph*_*ent 7

旋转本质上是由良好描述的 \罪\ COS.

这是一个方便的技巧,单位四元数很好地表示三维旋转以及(在一些意义上,优于)旋转矩阵.按角度转换旋转\ THETA 关于法线轴 \ hat n =\left <x,y,z\right> 哪里 的x ^ 2 + Y ^ 2 + Z ^ 2 = 1,确实需要一点三角学: \左(\ COS \左(\ frac12\THETA \右)\右)+ \左右(x \罪\左(\ frac12\THETA \右)\右)1 + \左(Y \罪\左(\ frac12\THETA \右)\右)J + \左(Z \罪\左(\ frac12\THETA \右)\右)K.

但从那以后它就是简单的算法.四元数Q = A + BI + CJ + DK 可以直接应用于旋转矢量 Q(XI + YJ + ZK)●^ { -  1},或转换为旋转矩阵 \左(\开始{矩阵} A ^ 2 + B ^ 2-C ^ 2-d ^ 2&2BC-2AD&2BD + 2AC\2BC + 2AD&一个^ 2-B ^ 2 + C ^ 2-d ^ 2&2CD-2AB\2bd- 2AC&2CD + 2AB&一个^ 2-b ^ 2-C ^ 2 + d ^ 2\{端矩阵} \右).

当然,这是围绕原点的旋转.围绕任意点旋转Ø 在太空中,只需翻译 -o 到原点,旋转,然后翻译 Ø 回来.