两种3D旋转
1. 轴/角(指数扭曲)
物体在三维空间中的旋转,可以被分为解为在直接坐标系下,分别先后围绕x,y,z坐标轴旋转得到。旋转的角度也就是我们常听到的角度roll,pitch,yew。如果已知这几个角度,就可以直接通过每一步的矩阵相乘得到整个旋转矩阵。旋转矩阵还可以理解为围绕空间中某一个向量,直接一次旋转某一个角度得到。 旋转向量的长度(模)表示绕轴逆时针旋转的角度(弧度)。旋转向量与旋转矩阵可以通过罗德里格斯(Rodrigues)变换进行转换,以
n^(n^x,n^y,n^z)
n
^
(
n
^
x
,
n
^
y
,
n
^
z
)
为轴做
θ
θ
角旋转的旋转矩阵写为:
其中, I I 为单位矩阵
https://blog.csdn.net/wangyang20170901/article/details/78800540
https://blog.csdn.net/u014328804/article/details/71499966
2. 单位四元数
四元数:指将二维平面的复数坐标额外增加2个虚数扩展到三维空间,即一般形式为:
q=s+xi+yj+zk
q
=
s
+
x
i
+
y
j
+
z
k
式中,s为实数,
xi,yj,zk
x
i
,
y
j
,
z
k
为虚数
单位四元数即为四元数除以它的范数
|q|=s2+x2+y2+z2−−−−−−−−−−−−−−√
|
q
|
=
s
2
+
x
2
+
y
2
+
z
2
利用单位四元数表述旋转主要利用一个复数的特征,即对一个复数乘以i,这个复数在复数平面上旋转了90°。
则定义一个可以旋转3D空间的单位四元数
q=cosθ+sinθv⃗ =[cosθ,sinθv⃗ ]
q
=
cos
θ
+
sin
θ
v
→
=
[
cos
θ
,
sin
θ
v
→
]
其中
v⃗ =(ai,bj,ck)
v
→
=
(
a
i
,
b
j
,
c
k
)
,表示三维任意向量。
则对任意的坐标
p=[0,p⃗ ](p为纯四元数)
p
=
[
0
,
p
→
]
(
p
为
纯
四
元
数
)
绕向量
v⃗
v
→
旋转
θ
θ
角度后的坐标
P⃗ =qp
P
→
=
q
p
,即等于两个四元数的积。
由于经单位四元数变换后旋转了
2θ
2
θ
角,因此对旋转
θ
θ
角的旋转四元数的一半形式表示为:
http://www.qiujiawei.com/understanding-quaternions/#1.5
https://www.3dgep.com/understanding-quaternions/
https://www.zhihu.com/question/23005815