BlueRoseNote/03-UnrealEngine/Math/四元数学习笔记.md

2.8 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
四元数学习笔记 2023-10-25 13:16:32

前言

推荐学习视频:

另外作者还建立了一个四元数可视化网站: https://eater.net/quaternions ,点击里面的教学视频之后点击正方上的按钮就可以停止播放视频,并且可以手动操作四元数。

四元数

是一个四维数值系统用于描述三维空间关系。(现在主要用于描述旋转)

四元数的表达形式为:

q = w + xi + yj +zk

ijk可以分别理解为使用虚数来表示x、y、z3个轴的旋转值使用一个实数w作为Scale。 本身就可以理解为球形角度映射到一根轴上。举例假设在二维坐标轴中i,j即为x,y轴的坐标值。扩展到三维即i,j,k为x,y,z的坐标值。

四元数与旋转矩阵

图中的绿色、红色、蓝色部分分别是四元数的i j k的数据。 800

计算规则

四元数可用一般分配率来计算,其虚部遵循以下规则:

i^2+j^2+k^2=-1 ij = -ji =k jk=-ky=i ki=-ik=j

旋转规则

以垂直关系依次旋转每个轴。

右手定理

视频作者为了方便理解创建出的理论。当i的数值从0=>i时垂直于x轴的yz平面就会按照右手方向逆时针进行旋转。

PS.该定理是建立在使用左乘规则的基础上,如果使用右乘,就需要变成左手定理。

左乘规则

q \cdot p

可以看做为使用四元数q对点P进行了旋转。 所以四元数乘法不满足交换律。

q \cdot p \neq p \cdot q

右乘规则顺序相反。

在3D世界中使用四元数来控制旋转

使用四元数将物体旋转,需要使用到"夹心乘法"

p \rightarrow q\cdot p \cdot q^-1

image.png

四元数规范化

x^2 + y^2 + z^2 =1

FBX

四元数旋转顺序 xyz 可以使用 FbxNode::RotationOrder 了解其顺序。

旋转xyz分别为 the "roll" about the x-axis along the plane,
the "pitch" about the y-axis which extends along the wings of the plane,
and the "yaw" or "heading" about the z-axis

Qt

Qt中四元数旋转顺序zyx 或 yxz 旋转xyz分别为pitch yaw roll

UE

UE中四元数的旋转顺序为zyx。其中旋转X轴为Roll旋转Y轴为Pitch旋转Z轴为Yaw