美文网首页
3D中的角位移和方位

3D中的角位移和方位

作者: xiaoxingyun | 来源:发表于2016-10-30 22:17 被阅读435次

什么是方位?

物体的“方位”主要描述的是物体的朝向,但是“方位”和“方向”不是同一个概念,例如,向量有方向没有方位,可以让向量自转,但是它却不会有任何变化,因为向量的属性没有“厚度”和“宽度”。但是一个3D的物体自转就会有方位的变化。弄清楚方位还需要区分这三个词:方位、角位移、旋转。角位移是方向上的变化(例如,从旧方位到新方位的角位移,或者从惯性坐标系到物体坐标系的角位移),“方位”是一个单一的状态,“角位移”是描述两个状态之间的差别。所以一般用矩阵和四元数来描述“角位移”,用欧拉角来描述“方位”。

欧拉角

欧拉角的基本思想是将角位移分解为绕三个互相垂直轴的三个旋转组成的序列。一般是使用笛卡尔坐标系并按照一定的顺序所组成的旋转序列,最常用的约定,是“heading-pitch-bank”约定。heading为绕y轴的旋转量,pitch为绕物体坐标系的x轴,bank为绕物体坐标系的z轴。
欧拉角的缺点:1、在将一个角度加上360度的倍数时,就会遇到别名问题。因为加上360度之后,物体的方位不会改变。2、更麻烦的别名问题是由三个角度不互相独立导致的。例如,pitch135度等价于heading180度,pitch45度。为了保证任意方位都只是独一无二的表示,必须限制角度的范围。一种常用的技术是将heading和bank限制在+180°到-180°之间,pitch限制在+90°到-90°之间。欧拉角最著名的别名问题是这样的:先heading45°再pitch90°,一旦选择±90°为pitch角,就被限制在只能绕竖直轴旋转,这种现象,角度为±90°的第二次旋转使得第一次和第三次旋转的旋转轴相同,称作“万向锁”。为了消除限制欧拉角的这种别名现象,规定万向锁情况下由heading完成绕竖直轴的全部旋转。换句话说,在限制欧拉角中,如果pitch为±90°,则bank为零。

矩阵形式

3D中,描述坐标系中方位的一种方法就是列出这个坐标系的基向量,这些基向量是用其它的坐标系来描述的,换句话说,能用一个旋转矩阵来描述这两个坐标系之间的相对方位,这个旋转矩阵用于把一个坐标系中的向量转换到另一个坐标系中。

四元数

一个四元数包含一个标量分量和一个3D向量分量。经常将标量分量记做w,记向量分量为单一的v或者分开的x,y,z。两种记法分别为[w,v]或者[w,x,y,z]。
数学中的复数可以和2D向量联系在一起,复数集存在于一个2D平面内上,可以认为这个平面有两个轴:实轴和虚轴。它能用来表达平面中的旋转,例如复数p绕原点旋转角度θ的情况,为进行这个旋转,引入另一个复数q=cosθ+i sinθ,则旋转后的向量就可以表示为

q'=pq=(x+y*i)(cosθ+i*sinθ)=(x*cosθ-y*sinθ)+i*(x*sinθ+y*cosθ)

引入复数q和使用2×2矩阵达到的效果是一样的。四元数扩展了复数系统,它使用三个虚部i,j,k,他们的关系如下:

i²=j²=k²=-1;
ij=k,ji=-k;
jk=i,kj=-i;
ki=j,ik=-j;

一个四元数[w,(x,y,z)]定义了复数w+xi+yj+zk。
四元数能被解释为角位移的轴-角对(n,θ)方式,然而n和θ不是直接存储在四元数的四个数中,具体的方式如下:

q=[cos(θ/2)   sin(θ/2)n]
=[cos(θ/2) (sin(θ/2)nx sin(θ/2)ny sin(θ/2)nz)]

●四元数的共轭和逆
四元数的共轭记做q=[w v]=[w -v]
四元数的逆记做q﹣1=q/ |q|,定义为四元数的共轭除以它的模。
共轭非常有趣,q和q
代表着相反的角位移。
●四元数叉乘

四元数乘法.PNG

四元数有一个非常有用的性质。扩展一个标准3D点(x,y,z)到四元数空间,通过定义四元数p=[0,(x,y,z)]即可,设q为旋转四元数形式[cos(θ/2),nsin(θ/2)],n为旋转轴,单位向量,θ为旋转角,p´=qpq﹣¹,这个乘法可以使3D点p绕n旋转。同时,四元数乘法能用来连续多次旋转,先进行a旋转再进行b旋转等价于执行乘积ba代表的单一旋转。

●四元数的“差”
“差”被定义为一个方位到另一个方位的角位移,也就是给定方位a和b,能够计算从a旋转到b的角位移d。

ab=d;
d=a﹣¹b

●四元数插值-slerp slerp(q1,q2,t)=q1(q1﹣¹q2)^t。
具体到几何上,


slerp.PNG

下面讨论一下怎样将角位移从一种形式转换到另一种形式

从欧拉角转换到矩阵

欧拉角描述了一个旋转序列。分别计算出每个旋转的矩阵再将他们连接成一个矩阵,这个矩阵就代表了整个角位移。可以是物体到惯性的矩阵,也可以是惯性到物体的矩阵。
惯性-物体
M=HPB,H、P、B分别为heading、pitch、bank的旋转矩阵,

HPB.PNG HPB2.PNG

物体-惯性
等于HPB的逆,为B﹣¹P﹣¹H﹣¹。

从矩阵转换到欧拉角

将角位移从矩阵形式转换到欧拉角需要考虑以下几点:
1、必须清楚矩阵代表什么旋转,物体-惯性or惯性-物体。
2、对任意给定角位移,存在无穷多个欧拉角可以表示它。所以假设只用“限制欧拉角”。
利用上面的惯性到物体的矩阵可以解得欧拉角。
M=


矩阵-欧拉角.PNG

从四元数转换到矩阵

四元数-矩阵.PNG

从矩阵转换到四元数

直接利用四元数到矩阵的公式检查对角线上元素的关系得到w,x,y,z的值。

矩阵-四元数.PNG

从欧拉角转换到四元数

为了将角位移从欧拉角形式转换到四元数,可以先将x,y,z三个旋转分别转化为四元数,再将这三个四元数连接成一个四元数。也要考虑到是物体-惯性还是惯性-物体。
q=hpb

欧拉角hpb.PNG 欧拉角-四元数.PNG

从四元数转换到欧拉角

四元数-欧拉角.PNG
由于有些公式不好编辑,所以直接放上了资料截图。上面的公式都参考于《3D数学基础:图形与游戏开发》,放上链接http://pan.baidu.com/s/1mibKdtA
img-d05f06e49c15bea07204b9fb56c2a446.gif

相关文章

  • 3D中的角位移和方位

    什么是方位? 物体的“方位”主要描述的是物体的朝向,但是“方位”和“方向”不是同一个概念,例如,向量有方向没有方位...

  • 第三章 方位与角位移

    方位 物体的方位主要描述物体的朝向。在描述物体的位置的时候,是需要基于某个坐标的参考点来描述物体的位移。而方位也一...

  • 大学物理(2)-单摆复摆、能量

    单摆 单摆的运动方程 角位移:偏离竖直线的角度,规定右侧为正。若悬线长为,重力力矩,拉力力矩为0.当角位移很小(一...

  • 方位和眼界

    当你站在高处 下方的人、事物自然就小了 当你站在低处 周围所有的东西都显得很大 大部分时候 事物本身没有问题 而是...

  • 28期福彩3D大低

    23期福彩3D 333注 中 24期福彩3D 378注 × 25期福彩3D 381注 中 26期福彩3D ...

  • 7. GOCAD/FEM—创建封闭的3D模型

    在Create 3D Model任务(图10)中,可以从曲面构造密封的3D模型。 在3D model name框中...

  • 3D投影 | 360度带你探索神秘宇宙

    一个神秘的球体 包含了所有的未知探索 在那里 你可以全方位的找到答案 【视频?国外科技分享<100>-3D投影 |...

  • 3D

    照相机将三维空间的物体转换为2D的相片。在3D开发中,利用照相机原理来进行2D和3D的相互转换。在3D开发中,相机...

  • 方位性择吉忌三煞

    方位性择吉忌三煞 一、择吉可分为方位性和非方位性的两大类。方位性主要是造葬等择吉,而非方位主要是婚姻嫁娶等择吉。 ...

  • 如何使用ZBrush创建3D微型机械昆虫(下)

    在今天的系列教程里,继如何使用ZBrush创建3D微型机械昆虫(上)和如何使用ZBrush创建3D微型机械昆虫(中...

网友评论

      本文标题:3D中的角位移和方位

      本文链接:https://www.haomeiwen.com/subject/uhruuttx.html