• 1 欧拉角与四元数计算机动画笔记



          以前人们都用Euler Angles来描述几何体的旋转,Euler Angles通常包含XYZ三个旋转分量,也就是我们所熟知的分别绕X、Y、X轴旋转的度数。用Euler Angles表示旋转算是比较节省的了,仅仅利用三个实数就能表示空间中的任意旋转。
          下面说说它的缺点:
    1. 某些情况下会产生Gimbal Lock,Gimbal Lock是什么可以百度查查;
    2. 计算机动画通常需要进行旋转插值,这样的话就需要对Euler Angles三个分量分别做插值,而这三个分量的插值都是相互独立的,最后的插值效果会不够平滑;

          英国数学家William Hamilton在1843发明了Quaternion. Quaternion是复数的扩展. 很快Quaternion就被应用来描述三维旋转. 然而, 直到1985年, Quaternion在计算机动画模拟中的威力才被广泛认识. 1985年Ken Shoemake在他的"Animating Rotation with Quaternion Curves"一文中对Quaternion的原理与应用作了详尽的解释.

         Quaternion是一个四维的矢量, 如下:
         Q = <w, x, y, z>
         其复数形式如下:
         Q = w + xi + yj + zk
         在图形学中, 单位Quaternion常被利用来描述物体在三维空间中的旋转. 它的几何意义是物体绕轴<x, y, z>旋转一个角度. 这个角度表示如下:
         cos(θ/2)=w
         与Euler Angles相比, Quaternion有很多的优点,前面提到的Euler Angles的两个大缺陷它都克服了。

         在动画模拟中, 经常需要对旋转作插值计算. 这时候, Quaternion具有矩阵和Euler Angles所不具有的优势: 对旋转进行光滑的插值计算. 它的结果是高质量的动画. 它是通过对角度进行线性插值(Linear Interpolation)得到的。

         需要说明的是,Quaternion和矩阵一样,是纯粹的数学概念,不如Euler Angles那么直观。

    ref:

    http://hi.baidu.com/sxligang/blog/item/bfc4db4bc80989f282025cc0.html

    http://www.cppblog.com/heath/archive/2009/12/13/103127.html

    http://hi.baidu.com/dante_sysu/blog/item/2115fc2bce42b7424ec22632.html    (Gimbal Lock)

    Animating rotation with quaternion curves.pdf

  • 相关阅读:
    R 读取xls/xlsx文件
    网页免费转换为可编辑的PDF
    Python: NumPy, Pandas学习资料
    鱼油资料
    Activity的四种启动模式和onNewIntent()
    Android Service、IntentService,Service和组件间通信
    Activity生命周期
    Node.js学习起步
    Android 技能图谱学习路线
    Blog
  • 原文地址:https://www.cnblogs.com/dawn/p/2442735.html
Copyright © 2020-2023  润新知