the*_*der 5 math 3d quaternions
我正在编写3D游戏,其中用户控制第一人称相机,并且移动被约束到球体的内表面.我设法限制了运动,但我无法弄清楚如何使用四元数来管理相机方向.理想情况下,相机向上矢量应该沿着球体的法线指向其中心,用户应该能够自由地环顾四周 - 好像我们总是在球体的底部,无论他在哪里移动.
据推测,你有两个向量描述相机的定向.一个将描述相对于相机方向的哪个方向,另一个将是您的相机瞄准的方向.您还将拥有一个位置,您的相机位于某个位置.您可以定义一个规范的方向和位置,例如:V'upV'normp'
Vup = <0, 1, 0> Vnorm = <0, 0, 1> p = <0, -1, 0>
给定四元数旋转q,然后将旋转应用于这些向量以获得:
V'up = qVupq-1 V'norm = qVnormq-1 p' = qpq-1
在您的特定情况下,您定义q为逐步累积导致应用于相机的最终旋转的各种旋转.效果将是它看起来像你正在描述的.也就是说,您将摄像机移动到静态定位和定位的球体内,而不是将镜头移动到静态定向和定位的摄像机周围.
通过围绕矢量旋转某个角度θ来计算每个增量.V = V'up x V'norm