[DirectX12学习笔记] 四元组

本文介绍了四元组的概念,包括其与复数的相似性、共轭、模长、求逆和单位四元组。讨论了四元组在三维空间中的旋转操作,阐述了旋转操作符的矩阵表示,并展示了如何使用四元组进行旋转插值。最后,通过一个简单的DirectX12旋转动画demo,展示了四元组在骨骼动画中的应用。
摘要由CSDN通过智能技术生成
  • 注意!本文是在下几年前入门期间所写(young and naive),其中许多表述可能不正确,为防止误导,请各位读者仔细鉴别。

四元组


这篇文章内容将比较偏数学,为方便快速复习,这里只列出关键的结论。

四元组简介

四元组类似于一个复数,有实部和虚部,只不过四元组的虚部是个矢量,因此总共有四维,一般来说我们把矢量放在前面,也就是说存在XMFLOAT4里面的时候,前三维是虚部,最后一维是实部。

运算的定义
在这里插入图片描述
乘法可以写成矩阵形式
在这里插入图片描述

注意因为涉及叉乘,左手系和右手系里的四元组不一样。

乘法和矩阵乘法一样,有结合律没有交换律。

单位四元组(0,0,0,1),纯四元组 ( v ⃗ , 0 ) (\vec{v},0) (v ,0)

共轭

在这里插入图片描述

共轭的性质
在这里插入图片描述

模长的定义就是二阶范数

在这里插入图片描述

求逆

在这里插入图片描述

逆的性质
在这里插入图片描述

单位四元组

在这里插入图片描述
可以写成
在这里插入图片描述

旋转操作符

复数相乘的时候,模长相乘,辐角相加。乘单位复数相当于作旋转操作。
四元组也类似,假如我们有单位四元组 q = ( u , \bf{q} = (\bf{u}, q=(u, w ) ) ),有 q − 1 = q ∗ \bf{q}^{-1}=q^* q1=q,假如p是一个三维空间中的点或矢量,我们把p看作一个纯四元组,即(v,0),考虑如下计算
在这里插入图片描述
其中
在这里插入图片描述
相当于对着 n ⃗ \vec{n} n 这根轴旋转了2θ。
我们可以这样构造q
在这里插入图片描述
这样就是绕 n ⃗ \vec{n} n 轴旋转θ角(左手系)。

旋转操作符转矩阵:
在这里插入图片描述
旋转矩阵转旋转操作符:
在这里插入图片描述
在这里插入图片描述

旋转操作符复合
在这里插入图片描述

四元组插值

定义点乘
在这里插入图片描述

插值
在这里插入图片描述
可以看出这种spherical插值不是线性的,但是对角度而言是匀速的插值,相比之下,(1-t)a+tb这种线性插值再归一化得到的结果是不匀速的旋转,会先加速再减速。

旋转操作符有这么一个性质
在这里插入图片描述
即负的q也会得到同样的旋转结果,然而这个过程是不同的
在这里插入图片描述
负的q旋转是绕 n ⃗ \vec{n} n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值