【《三维网格模型变换中的四元数旋转基础分析案例》3200字】_第1页
【《三维网格模型变换中的四元数旋转基础分析案例》3200字】_第2页
【《三维网格模型变换中的四元数旋转基础分析案例》3200字】_第3页
【《三维网格模型变换中的四元数旋转基础分析案例》3200字】_第4页
【《三维网格模型变换中的四元数旋转基础分析案例》3200字】_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

三维网格模型变换中的四元数旋转基础分析案例 使向量发生旋转除了乘旋转矩阵,还可以使用欧拉旋转和四元数进行旋转的操作,矩阵旋转的优点是原转轴可以是任意向量,但是其计算量比较大、消耗时间且占用内存;欧拉旋转是将向量按照固定的旋转轴(坐标轴)分别按次序旋转一定的角度,这种方式简单直观、容易理解,但是缺点是会造成万向锁,导致失去一个方向上的旋转能力;四元数旋转可以避免万向锁,且可以绕任意过原点的向量进行旋转,在某些情况下实现效率比矩阵旋转高,并且可以提供平滑的插值。四元数旋转更适合三维网格变形,但缺点是不够直观、复杂难以理解。本文使用四元数进行旋转操作,下面简单介绍利用四元数旋转的原理: 一个四元数通常被定义为下面这种形式:q=a+bi+cj+dk,其中:(2-13) 一般将a称为四元数的实数部分,b、c、d称为虚数部分,四元数又可以写为以下形式REF_Ref72247347\r\h[20]:q=(2-14)公式(2-13)也就是一个实数与一个向量的组合(向量可以看作是实数部分为0的四元数、实数也可以看作是虚数部分为零的四元数)。四元数的加减就是按照实数部分相加减,虚数部分相加减的规则进行运算,但是四元数的乘法则比较复杂,假设q1=a+bi+cj+dk,q1q2=(2-15) 如果令v=b,c,dv·u=(bf+cg+dh)(2-16)v×u=(2-17)这里i、g、k是向量的基,所以如果用标量向量和有序对来表示四元数乘法的话:q(2-18)必须要注意的是,四元数的乘法运算并不符合交换律,也就是说q1另外,如果两个四元数q1=a+bi+cj+dk,q2 本文已经给出四元数的定义和简单的运算方法,下面介绍如何用四元数表示旋转。首先我介绍一下三维空间中向量的旋转。表示三维向量空间中的旋转方法很多,这里介绍轴角式的旋转,也就是给定一个旋转轴和旋转角度,计算被旋转后的向量的方法。 给定一个经过原点(如果旋转轴不经过原点可以先将其平移到原点,进行旋转之后再将其平移到原处,不会影响旋转的结果)的旋转轴u=(x,y,z)T,使一个向量v沿着这条旋转轴旋转θ度,变换到图2-2三维空间内向量的旋转 本篇论文默认使用右手坐标系,根据右手定则上图所表示的方向(逆时针)即旋转的正方向。在这里我们只需要使向量绕着u的方向进行旋转,所以我们可以规定旋转轴为单位向量也就是:u= 在向量旋转的过程中,把向量分解为两个向量,一个是平行于旋转轴的向量v||,另一个是垂直于旋转轴的向量v图2-3旋转向量的分解 那么向量v=v 然后可以分别旋转v的分量v⊥和v||得到v⊥'和v||',将他们相加便可以得到旋转后的向量: 实际上可以将向量v||看作是向量v在旋转轴uv(2-19)那么根据向量的合成与分解:v(2-20)从图中可以看出,旋转过后在平行于旋转轴方向上的分向量没有发生变化,所以我们可以得到结论(1):当v||与旋转轴平行时,旋转后的向量与旋转的角度无关,且与旋转之前相等即:v现在分析垂直于坐标轴的分量v⊥图2-4向量分解 但是在这个平面内只有一个向量v⊥,我们需要构造另一个向量来表示旋转,这个向量可以由u和vω=u×(2-21) 因此旋转后的向量v⊥'可以由ω和v⊥经过伸缩变换后合成。因为向量w的模长w=u×v⊥v⊥(2-22) 所以我们得到结论(2):当v⊥与旋转轴垂直时旋转之后的向量v⊥' 根据结论(1)(2)可以得到向量v绕轴u旋转θ度后的结果:v'=(2-23) 将v||=(u⋅v)u、v=vcosθ+(2-24) 上述公式就是三维坐标的旋转变换公式,只需要确定一个旋转轴和旋转角度即可通过公式(2-24)得到经过旋转变换后的向量坐标。 将四元数跟三维旋转联系起来,用四元数表示三维旋转。为了方便区分四元数与向量的表示,将四元数表示为Q(a),那么我们可以定义以下四元数:Qv=Qv⊥ 同理可以定义Qv∥、Q(v∥')、 根据四元数的加法运算法则:Q(2-25)Q(2-26) 根据公式(2-22),如果用四元数代替向量,根据四元数的运算法则,下列等式仍然成立:Q((2-27) 我们期望将这个等式写成全部是四元数的运算形式,对上式进行变形:Q(2-28) 不妨令QqQ(2-29) 也就是说,如果旋转轴u的坐标为(x,y,z)T,旋转角度为θQ(2-30) 下面再考虑v∥用四元数表示旋转的方式,很容易得到Q 至此可以获得向量在三维空间中旋转用的四元数表达式:Q(2-31) 在对这一等式进行简化之前,必须先声明几个引理: (1)如果Qq=[cosθ,usinθ],且u为单位向量,那么 (2)假设一个纯四元数Qv∥=[0,v∥],Qq=[α,βu],其中向量u是单位向量, (3)假设一个纯四元数Qv⊥=[0,v⊥],Qq=[α,βu],其中向量u是单位向量, (4)单位四元数的逆与其共轭四元数相等即Q 这些引理根据四元数的运算法则和性质可以得到证明,这里不具体展开证明。由引理(1)(2)(3)(4)得:Qv'=Qv(2-32) 在上述过程中,本文使用Qq的形式表示一个四元数,以避免对四元数和向量的表示出现混乱。一般的,四元数用一个小写字母来表示。把公式(2-32)换成一般的形式,也就是:v'=pvp',在这里p和p 在这里,q=pq=Q(2-33) 根据引理(1):p=cos⁡(θ/2)+sin⁡(θ/2)xi+sin⁡(θ/2)yi+sin⁡(θ/2)zi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论