旋转的矩阵与四元数的转换算法

合集下载

opencv旋转矩阵转四元素

opencv旋转矩阵转四元素

opencv旋转矩阵转四元素OpenCV是一个广泛使用的计算机视觉库,其中包含了一些用于图像处理和计算机视觉的函数和算法。

在OpenCV中,旋转矩阵是一个常用的概念,用于描述图像或物体的旋转操作。

与旋转矩阵相关的还有四元数,它是一种用于表示旋转的数学工具。

本文将介绍如何使用OpenCV将旋转矩阵转换为四元数,并详细讨论了它们之间的关系和应用。

在计算机视觉中,旋转矩阵用于描述二维或三维空间中的旋转操作。

它是一个二维或三维的方阵,其中的元素代表了坐标轴的旋转情况。

在OpenCV中,旋转矩阵可以通过旋转角度来构造,也可以通过旋转向量来构造。

旋转角度是一个标量,用于表示旋转的大小;旋转向量是一个三维向量,用于表示旋转的方向和角度。

而四元数是一种用于表示旋转的数学工具,它包含了四个实数元素:一个实部和三个虚部。

四元数可以通过旋转矩阵来构造,也可以通过旋转向量来构造。

与旋转矩阵不同,四元数是一种更高级的表示方式,它可以更简洁地表示旋转,并且在某些应用中具有更好的性能。

在OpenCV中,可以使用函数cv2.Rodrigues()将旋转矩阵转换为旋转向量,然后使用函数cv2.Rodrigues()将旋转向量转换为旋转矩阵。

这两个函数是OpenCV中常用的旋转矩阵与旋转向量之间的转换函数。

这里需要注意的是,旋转矩阵和旋转向量之间的转换是一一对应的,即可以通过旋转矩阵唯一确定一个旋转向量,反之亦然。

而要将旋转矩阵转换为四元数,则需要使用到其他的函数。

在OpenCV中,可以使用函数cv2.RQDecomp3x3()将旋转矩阵分解为旋转向量和平移向量,然后使用函数cv2.Rodrigues()将旋转向量转换为旋转矩阵。

最后,可以使用函数cv2.Rodrigues()将旋转矩阵转换为四元数。

这样,就可以实现将旋转矩阵转换为四元数的操作。

旋转矩阵和四元数之间的转换在计算机视觉和图像处理中具有广泛的应用。

例如,在三维物体的姿态估计中,可以使用旋转矩阵来描述物体的旋转,然后将旋转矩阵转换为四元数,以便在后续的计算中更方便地表示和处理旋转。

旋转矩阵、旋转向量、欧拉角、四元数的关系

旋转矩阵、旋转向量、欧拉角、四元数的关系

旋转矩阵、旋转向量、欧拉⾓、四元数的关系向量的矩阵形式有两个向量:→a =(a 1,a 2,a 3)→b =(b 1,b 2,b 3)叉乘的结果表⽰⼀个向量,这个向量向量垂直于a,b 向量构成的平⾯。

→a ×→b =‖e 1e 2e 3a 1a 2a 3b 1b 2b 3‖=a 2b 3−a 3b 2a 3b 1−a 1b 3a 1b 2−a 2b 1=0−a 3a 2a 30−a 1−a 2a 10b 1b 2b 3=a ∧b将向量a 对应的矩阵表⽰出来,为⼀个反对称矩阵,每⼀个向量都对应着⼀个反对称矩阵。

这就引出向量的矩阵形式。

a ∧=0−a 3a 2a 30−a 1−a 2a 1坐标变换的易混点在齐次变换中p 1=T 12·p 2p 2=T 23·p 3T 12表⽰,把坐标系{2}的向量变换到坐标系{1}中,T 23同理,如果把坐标系{3}下的向量变换到坐标系{1}中为:p 1=T 12·T 23·p 3旋转向量和欧拉⾓: SO(3)的旋转矩阵有9个量,但是只有3个⾃由度,同理SE(3)有16个量,但是也只有6个⾃由度。

在实际的旋转中,任意的旋转都可⽤⼀个旋转轴和⼀个旋转⾓来表⽰,我们使⽤⼀个向量,⽅向与旋转轴⼀致,长度等于旋转⾓,这样只需要⼀个三维向量即可描述旋转。

对于SE(3),⽤⼀个旋转向量和⼀个平移向量即可表达,恰好⾃由度为6.如果⽤旋转向量来描述R :旋转轴为⼀个单位长度的向量n,⾓度为θ,那么θn 可以表⽰这个旋转。

旋转矩阵R 和旋转向量θn 的转换过程为罗德⾥格斯变换:R =cos θI +(1−cos θ)nn T +sin θn ∧此处末尾的n ∧ 如上⾯所⽰,代表矩阵表⽰的向量。

那么反过来通过旋转矩阵获取转⾓ θ;θ=arccostr (R )−12tr(R)为矩阵R 的迹。

对于转轴n,Rn=n;表⽰为转轴绕⾃⾝转动不⽣改变,从数学来说n 是矩阵R 特征值为1时对应的特征向量。

四元数学习之四元数和矩阵的转换

四元数学习之四元数和矩阵的转换

四元数学习之四元数和矩阵的转换四元数学习之四元数和矩阵的转换四元数是⼀种可以替代矩阵和欧拉⾓的数学⼯具。

他最初是由William Rowan Hamilton发现的(参考维基百科),它的最⼤的特点是不满⾜交换率。

也谈⼀下⾃⼰对这⼀点的体会。

在离散数学中有讲到半群、群、环和域的概念,其中环的定义是具有交换率和分配率(详情参考环的数学定义),⽽域的概念则是在环的基础上加上了交换率。

所以说四元数⽆法满⾜域的定义,它是除法环的⼀种。

何为除法环?其实很简单,被除数和除数都满⾜结合律和分配律,但是如果要满⾜交换律,即被除数和除数交换位置,那么它的结果是不同的(准确地说,如果它们不为0的话,那么结果呈倒数关系)。

⼜由于要在四维解空间上解得i3=-1,所以只能在不满⾜交换率的条件下得出i、j、k。

四元数在计算机图形学的优势在于运算量⼩和利于插值,且旋转没有缺陷。

可是普通的⼀个四元数定义⼜⽐较难懂,⽽且OpenGL的API 中⼜没有带四元数的参数的函数,所以需要我们根据公式做⼀做⼩⼩的转换。

设四元数Q(x, y, z, w)表⽰向量a(x a,y a, z a)经过α⾓旋转后的结果,则x、y、z和w分别为:x= sin(α/2)·x ay= sin(α/2)·y az= sin(α/2)·z aw= cos(α/2)在中讲到了如何⽤⼀个矩阵表⽰坐标系沿向量的旋转,这⾥我直接给出公式:将这两个公式结合起来。

再结合⾼中所学的半⾓公式:sinα = 2sin(α/2)·cos(α/2)cosα = cos2(α/2) - sin2(α/2)cos2(α/2) = (1 +cosα)/2sin2(α/2) = (1 -cosα)/2可以解出⽤四元数表⽰旋转矩阵为:该来验证⼀下公式的正确性,同样地,采⽤OpenGL托管的矩阵来测试,看看使⽤⾃带的glRotatef()函数和我们写的公式相⽐,究竟有没有差距。

glm 四元数转换矩阵-概述说明以及解释

glm 四元数转换矩阵-概述说明以及解释

glm 四元数转换矩阵-概述说明以及解释1.引言1.1 概述四元数(Quaternion)是数学中的一种扩展复数,广泛应用于3D计算机图形学和空间几何运算等领域。

它由一个实部和三个虚部组成,具有一些独特的性质和优点。

在图形学中,四元数被用于表示和计算物体的旋转,相比其他表示旋转的方法,如欧拉角和旋转矩阵,四元数具有更简洁和高效的计算方式。

本文将首先介绍球面线性插值(Spherical Linear Interpolation, 简称SLERP)的概念及其在计算机图形学中的应用。

接下来,我们将详细探讨四元数的定义和性质,包括四元数的运算法则、单位四元数的特点等。

最后,我们将重点讲解四元数与旋转矩阵之间的相互转换关系,包括如何将一个旋转矩阵转换为对应的四元数表示,以及如何从四元数恢复出旋转矩阵。

通过深入理解四元数与旋转矩阵之间的转换关系,我们可以更好地理解和应用四元数在3D图形学中的作用。

对于计算机图形学从业者来说,这是一个非常重要的基础知识。

此外,我们还将展望四元数在虚拟现实、计算机动画等领域的应用前景,并提出相关讨论和建议。

通过阅读本文,读者将能够理解四元数转换矩阵的原理和算法,并能够应用于实际问题中。

无论是从事计算机图形学研究还是从事相关行业工作的人士,本文的内容都将对他们的工作产生积极的影响和帮助。

总结起来,本文旨在为读者提供一份系统而全面的关于glm四元数转换矩阵的学习材料,并希望能够激发更多人对这一领域的兴趣和研究。

1.2文章结构文章结构部分的内容可以写成以下样式:2. 正文2.1 球面线性插值2.2 四元数的定义和性质2.3 四元数到旋转矩阵的转换在正文部分,我们将着重介绍GLM(OpenGL 数学库)中的四元数转换矩阵的相关知识。

首先,我们将会详细讨论球面线性插值算法的原理和应用,以便更好地理解四元数和矩阵之间的转换关系。

接下来,我们将会介绍四元数的定义和性质。

四元数是一种复数的扩展形式,具有独特的性质和运算规则。

三维旋转:旋转矩阵,欧拉角,四元数

三维旋转:旋转矩阵,欧拉角,四元数

三维旋转:旋转矩阵,欧拉⾓,四元数原⽂见我的,欢迎⼤家过去评论。

如何描述三维空间中刚体的旋转,是个有趣的问题。

具体地说,就是刚体上的任意⼀个点P(x, y, z)围绕过原点的轴(i, j, k)旋转θ,求旋转后的点P\'(x\', y\', z\')。

旋转矩阵旋转矩阵乘以点P的齐次坐标,得到旋转后的点P',因此旋转矩阵可以描述旋转,$$\begin{bmatrix}x'\\ y'\\ z'\\ 1\end{bmatrix}=R\cdot \begin{bmatrix}x\\ y\\ z\\ 1\end{bmatrix}$$绕x,y,或z轴旋转θ的矩阵为:$$R_{x}(\theta)=\begin{bmatrix}1 & 0 & 0\\ 0 & \cos\theta & -\sin\theta\\ 0 & \sin\theta & \cos\theta\end{bmatrix}$$$$R_{y}(\theta)=\begin{bmatrix}\cos\theta & 0 & -\sin\theta\\ 0 & 1 & 0\\ \sin\theta & 0 & \cos\theta\end{bmatrix}$$$$R_{z}(\theta)=\begin{bmatrix}\cos\theta & -\sin\theta & 0\\ \sin\theta & \cos\theta & 0\\ 0 & 0 & 1\end{bmatrix}$$所以,绕任意轴旋转的矩阵为$$R_{x}(-p)\cdot R_{y}(-q)\cdot R_{z}(\theta)\cdot R_{y}(q)\cdot R_{x}(p)$$这表⽰:1. 绕x轴旋转⾓度p使指定的旋转轴在xz平⾯上2. 绕y轴旋转⾓度q使指定的旋转轴与z轴重合3. 绕z轴旋转⾓度θ4. 绕y轴旋转⾓度-q5. 绕x轴旋转⾓度-p其中,p和q的值需要⽤i,j,k计算出来。

四元数旋转原理

四元数旋转原理

四元数旋转原理四元数旋转原理1. 什么是四元数?四元数是一种在数学和计算机图形学中广泛使用的数学工具,它可以用来表示三维空间的旋转。

四元数由一个实部和三个虚部组成,通常写作:q = w + xi + yj + zk,其中w代表实部,x、y和z 代表虚部的各分量。

2. 四元数与旋转在计算机图形学中,我们经常需要对三维物体进行旋转。

旋转可以通过矩阵运算实现,但是使用四元数可以更加高效地进行计算。

四元数与旋转之间的关系是通过矩阵和向量运算推导出来的。

3. 三维旋转的表示三维空间中的旋转可以用一个旋转矩阵来表示。

旋转矩阵是一个3x3的矩阵,其中的元素表示旋转后的坐标在原坐标系下的表示。

但是由于旋转矩阵有很多限制(如行列式为1),使用矩阵进行旋转计算会相对复杂和低效。

4. 四元数的性质四元数具有一些特殊的性质,使得它们在旋转计算中非常有用。

其中最重要的性质是四元数的乘法。

四元数的乘法可以用来将两个旋转合并成一个旋转,或者用来将一个旋转应用到一个向量上。

5. 四元数的乘法运算四元数的乘法运算满足结合律和分配律,但是不满足交换律。

具体的乘法规则如下:•实部:w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2•虚部x:w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2•虚部y:w1 * y2 - x1 * z2 + y1 * w2 + z1 * x2•虚部z:w1 * z2 + x1 * y2 - y1 * x2 + z1 * w26. 四元数的进一步理解通过上述的乘法运算规则,我们可以看出四元数的实部与虚部之间的关系。

实部代表旋转的角度,而虚部表示旋转的轴向。

这样,一个四元数就可以表示一个旋转的量,旋转的方向由虚部确定,旋转的大小由实部确定。

7. 四元数旋转的应用四元数旋转广泛应用于计算机图形学中的三维旋转操作。

通过使用四元数来表示旋转,可以避免旋转矩阵的繁琐计算和误差累积的问题,提高了旋转计算的效率和精度。

旋转矩阵和四元素法

旋转矩阵和四元素法

旋转矩阵和四元素法引言:旋转矩阵和四元素法是计算机图形学中常用的两种方法,用于描述和计算三维空间中的旋转变换。

本文将详细介绍旋转矩阵和四元素法的原理、应用以及优缺点。

一、旋转矩阵的原理和应用:1. 原理:旋转矩阵是一个3x3的矩阵,用于描述三维空间中的旋转变换。

旋转矩阵的每一列代表了旋转后的坐标轴在原始坐标系中的表示。

通过将一个向量与旋转矩阵相乘,可以实现对该向量的旋转变换。

2. 应用:旋转矩阵广泛应用于计算机图形学、计算机视觉等领域。

在三维建模中,使用旋转矩阵可以实现物体的旋转、变形和姿态控制。

在游戏开发中,旋转矩阵常用于计算相机的朝向和角度变化。

此外,旋转矩阵还可以用于计算两个坐标系之间的转换。

二、四元素法的原理和应用:1. 原理:四元素法,又称为四元数法,是一种用四个实数表示旋转的方法。

四元数由实部和虚部组成,虚部是一个三维向量。

通过将旋转变换表示为一个旋转轴和旋转角度,可以通过四元数的乘法来实现旋转变换。

2. 应用:四元素法在计算机图形学中被广泛应用于旋转插值和动画的计算。

通过插值计算两个旋转变换之间的中间状态,可以实现平滑的动画过渡效果。

此外,四元素法还可以用于防止万向锁现象的发生,提高旋转变换的稳定性和精确性。

三、旋转矩阵和四元素法的优缺点比较:1. 旋转矩阵的优点:(1)计算简单直观,易于理解和实现;(2)可以直接应用于三维坐标系的变换;(3)可以通过矩阵的乘法来实现多个旋转变换的复合。

2. 旋转矩阵的缺点:(1)存在数值误差累积的问题,当进行多次旋转变换时,可能导致结果不准确;(2)矩阵的运算比较耗时,特别是在计算资源有限的设备上;3. 四元素法的优点:(1)无数值误差累积问题,旋转变换精确度高;(2)计算速度较快,适用于实时计算和动画插值;(3)可以方便地进行旋转插值和平滑动画的计算。

4. 四元素法的缺点:(1)计算过程相对复杂,需要使用四元数的乘法和插值计算;(2)不直观,难以理解和调试;(3)在某些特定情况下,可能出现奇异性和计算不稳定性。

罗德里戈旋转公式

罗德里戈旋转公式

罗德里戈旋转公式罗德里戈旋转公式是用来计算三维空间中一个物体绕着某个轴旋转的公式。

它是由法国数学家皮埃尔-让-路易·罗德里戈(Pierre-Jean Robillard)在19世纪提出的。

该公式可以用于计算旋转矩阵和四元数之间的转换。

在三维空间中,一个物体的旋转可以通过旋转矩阵或四元数来表示。

旋转矩阵是一个3×3的矩阵,用来描述物体绕着某个轴旋转的角度和方向。

而四元数是一种数学工具,可以用来表示旋转的参数。

罗德里戈旋转公式将旋转矩阵和四元数之间的转换关系描述为一个非线性的映射关系。

它的表达式如下:q = q^((θ/2)q)其中,q是一个四元数,q是一个单位向量,表示旋转轴的方向,θ是旋转角度。

根据罗德里戈旋转公式,可以通过给定旋转轴和旋转角度来计算对应的旋转矩阵或四元数。

具体的计算方法如下:1. 将旋转轴单位化,即将其长度归一化为1;2. 根据旋转轴和旋转角度计算四元数的实部和虚部;3. 根据四元数的实部和虚部计算旋转矩阵。

罗德里戈旋转公式的优点是可以简洁地描述旋转操作,并且在计算机图形学和机器人学等领域得到了广泛的应用。

它能够快速而准确地计算物体的旋转,并且可以方便地与其他旋转表示方法进行转换。

然而,罗德里戈旋转公式也存在一些限制。

首先,它只能用于描述三维空间中的旋转,不能用于其他维度的旋转。

其次,当旋转角度接近180度时,由于公式中的指数函数的性质,计算结果可能会产生误差。

此外,由于罗德里戈旋转公式涉及到复数运算,所以在计算过程中需要注意数值精度和计算效率的问题。

罗德里戈旋转公式是一种用于计算三维空间中旋转的公式,可以方便地将旋转矩阵和四元数进行转换。

它在计算机图形学和机器人学等领域具有重要的应用价值,并且在实际的计算中需要注意一些限制和注意事项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绕指定方向的轴线的旋转旋转的矩阵与四元数的转换算法一、基本知识四元数 q=w+xi+yj+zk, q=w+v, q −1=|q|2q −.其中q −= w −xi −yj −zk 表示q 的共轭。

vv' =v×v' −v•v' …… ①qq'= (ww'−v•v') + (wv' +vw' +v×v'), …… ②v •v' = −(vv' +v'v) /2 , …… ③v×v' = (vv' −v'v) /2 . …… ④v 2=−|v|2. 内积v •v =|v|2.二、旋转表示为四元数绕指定方向n 的旋转公式为x'=(x •n)n(1−cosθ ) + cosθ x +sinθ n×x …… ⑤其中的向量运算转化为四元数运算得到x'= −(x n+nx)n (1−cosθ)/2 +cosθx +sinθ (n x−x n)/2,由于|n|=1, 故n −1=−n. 因此有x'= (1+cosθ)x/2 +sinθ (n x−x n )/2 −nxn (1−cosθ)/2 . …… ⑥x 的平行、垂直分量记为x p =(x•n)n , x v = x−x p , 则−nxn= x p − x v , 与x 关于n 轴对称。

(nx−xn)/2= n×x, 是x v 旋转+90°的结果。

若 n ⊥x, x•n =0,即xn=−nx, 此时nxn=x, 故 x' =(cosθ+n sinθ)x .q=r(cosθ+nsinθ)称为四元数的三角式,其中n 为单位向量,它的几何意义是,qx 表示对向量x 绕方向n 旋转θ角,然后长度扩大为r 倍。

任何四元数都有三角式q=w+v= |q|(w/|q|+n|v|/|q|)=r(cosθ+nsinθ).φ(x)=qxq −1称为四元数域上的合同变换。

若q=a+bn, |n|=1, 则 |q|2 =a 2+b 2 ,|q|2φ(x) = qx q − =( a+bn)x(a −bn) =(ax+bnx)(a −bn) =a 2x+ bnxa − axbn −bnxbn= a 2x+ ab(n x−xn)−b 2nxn. 即 |q|2(qxq −1) = a 2x+ ab(n x−xn)−b 2nxn …… ⑦由于n 2=−|n|2, nxn = (xn+nx)n+|n|2x = −2(x•n)n +|n|2x . 因此,若x 的标量分量为0, 则|q|2(qxq −1) = a 2x + 2abn×x +2b 2 (n •x)n − b 2|n|2x . …… ⑧比较⑥,⑦式得到 a 2/|q|2 =(1+cosθ)/2 , ab/ |q|2 = sinθ/2, b 2/ |q|2 =(1−cosθ)/2.a=|q|cos(θ/2), b=|q|sin(θ/2). q=cos(θ/2)+sin(θ/2)n.于是,绕单位向量n, 旋转角度θ可以表示为四元数q=cos(θ/2)+sin(θ/2)n 的合同变换x'=qxq −1. q 称为该旋转的四元数。

旋转的四元数不是唯一的,例如,如果φ(x)=qxq −1, r=aq, a≠0是任意标量,那么φ(x)=rxr −1.三、四元数的矩阵后面所用符号e 1,e 2,e 3与i,j,k 具有同样含义。

x'=Ax 中,A 的各个εi =Ae i ,恰好是矩阵A 的各列,注意到这一点,使我们可以很容易地计算四元数q=cos(θ/2)+nsin(θ/2) 的矩阵A :令列向量 εi = qe i q −1, 则 A=[ε1, ε2, ε3].例如绕x 轴旋转α角的四元数为 q = cos(α/2)+sin(α/2)i.εi = qe i q −1= cos 2 (α/2) e i + 2cos(α/2)sin(α/2) (i ×e i ) + sin 2 (α/2)(2(i • e i )i −e i ).ε1= cos 2 (α/2)i + sin 2 (α/2)i=i.ε2= cos 2 (α/2) j+ 2cos(α/2)sin(α/2) (i ×j) + sin 2 (α/2)(2(i • j )i −j) ==cos 2 (α/2) j+ 2cos(α/2)sin(α/2) k − sin 2 (α/2) j = cos α j+sin(α) k.ε3= cos 2 (α/2) k+ 2cos(α/2)sin(α/2) (i ×k) + sin 2 (α/2)(2(i •k )i −k) ==cos 2 (α/2)k −2cos(α/2)sin(α/2) j − sin 2 (α/2) k= cos α k −sin(α) j.旋转矩阵A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-ααααcos sin sin cos 1.四、矩阵的四元数 出于同样考虑,我们首先分析q= cos(θ/2) +nsin(θ/2)对于一些特殊向量的旋转结果, 然后反过来由这些向量在x'=Ax 之下的旋转结果确定q 的参数。

方法要点在于比较x'=Ax 以及⑧式的变换结果:φ(x) =qxq −1 = (a 2x + 2abn×x +2b 2 (n•x)n − b 2|n|2x )/|q|2 .[1] 确定q 的单位向量n. 令εi = Ae i , i=1,2,3. φ(e i ) = a 2 e i + 2abn×e i +2b 2 (n•e i )n − b 2 e i .如果ε1= e 1, 则取 n=e 1. 否则如果(ε1 −Ae 1)×(ε2 −Ae 2)≠0, 则取n 为其单位向量。

否则一定有 (ε1 −Ae 1)×(ε3 −Ae 3)≠0, 取n 为其单位向量。

[2] 确定a,b. e i •φ(e i )= a 2 +2b 2 a i 2 − b 2 . 其中 a 2+b 2=1, n=Σa i e i , |q|=1, A=(a ij ).于是e i •εi = 2a 2 +2b 2 a i 2 −1. a ii =2a 2 +2b 2 a i 2 −1. T=Σa ii =6a 2 +2b 2 −3 = 4a 2 −1. 故a 2 =(T+1)/4,b 2 =(3−T)/4. 取正的平方根。

[3] 确定 a,b 的符号。

(n ×e 1)•φ(e 1)= (n ×e 1)•( a 2 e 1 +2abn×e 1 +2b 2 (n•e 1)n −b 2 e 1)= 2ab(n×e 1)2.因此ab 与(n ×e 1)•φ(e 1)同号,即ab 与 313212111001a a a a a a =331221a a a a 同号。

如果a 21a 3−a 31a 2为负,则改b 为负。

§4.2 具体转换实例 对于常用的旋转变换,即用Euler 角指定的变换,可以按如下方法处理。

写出分别绕x,y,z−轴旋转角度α,β,γ的旋转变换以及相应得四元数依次为:x'=(x•i)i(1−cos α ) + cos α x +sin α i×x, q 1 = cos(α/2)+sin(α/2)i,x'=(x•j)j(1−cos α ) + cos α x +sin α j×x, q 2 =cos(β/2)+sin(β/2)j,x'=(x•k)k(1−cos α ) + cos α x +sin αk×x, q 3 =cos(γ/2)+sin(γ/2)k.q=q 3q 2q 1 . q 的分量表示为q=w+v, 其中 w= cos(γ/2)cos(β/2)cos(α/2) + sin(γ/2)sin(β/2)sin(α/2), v=ai+bj+ck, a=( cos(γ/2)cos(β/2)sin(α/2)− sin(γ/2)sin(β/2)cos(α/2) ),b=( cos(γ/2)sin(β/2)cos(α/2)+ sin(γ/2)cos(β/2)sin(α/2) ),c=( −cos(γ/2)sin(β/2)sin(α/2)+ sin(γ/2)cos(β/2)cos(α/2) ).把q 写成三角形时,就可以得到等效旋转轴n 与旋转角度θ. 具体公式为:q=|q|( cos(θ/2)+ n sin(θ/2)), cos(θ/2)=w/|q|, sin(θ/2)=|v|/|q|, n=v/|v|. 这里|q| =1自然成立。

一般情况下,采用§4.1的方法,举例如下例:试确定x'=Ax 的四元数,其中A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡θθθ-θ-θ+θ-θθ-θ+cos 2sin 2sin 2sin 2cos 1cos 1sin 2cos 1cos 1/2.解:[1] 取p=i, q=k, 则P=Ap=(1+cosθ, 1−cosθ, −sinθ√2)'/2, Q=Aq=( sinθ√2, −sinθ√2, 2cos θ)'/2, u=P−p=(−1+cosθ, 1−cosθ, −sinθ√2)'/2, v=Q−q= ( sinθ√2, −sinθ√2, 2cosθ−2)'/2,u×v= (cos θ−1, cosθ−1, 0)', 单位化为 (1,1,0)'/√2, 即n=(i+j)/√2 .[2] T=2+4cos θ, a 2 =(T+1)/4=(1+cos θ)/2=cos 2(θ/2) . b 2 =(1−cos θ)/2 = sin 2(θ/2) .取a=cos(θ/2) , b = sin(θ/2) .[3] 符号检查。

331221a a a a =0sin 22/1cos 1θ-θ-= sin θ, 与ab= sin θ/2 符号相同,故不必更改b 的符号。

相关文档
最新文档