三维旋转之四元数

先来一道问题

绕方向(nx,ny,nz)旋转θ角的旋转矩阵用四元数表示(_ ,_ ,_ ,_)^T

q =
 cos( θ / 2 )
⎛ nx⋅sin( θ/2 ) ⎞
 ny⋅sin( θ/2 )
⎝ nz⋅sin( θ/2 ) ⎠

​=
(cos( θ/2 ) ,nx⋅sin( θ/2 ) ,ny⋅sin( θ/2 ) ,nz⋅sin( θ/2 ))^T


注:
如果你是手机党 , 上面的公式你可能会觉得别扭,这是因为手机不能像电脑端显示的那么全,其他的电脑端和手机端就一致了! 请看如下图片: 这才是公式全貌!
在这里插入图片描述


在这里插入图片描述
题目给出的四个空四元数的具体分量。绕轴 (nx,ny,nz) 旋转角度 θ 的四元数 q 可以表示为四个分量:
在这里插入图片描述
注:把图片里的m,改成θ
这样的表示方式是把四元数视为一个四维向量,其中第一个分量是实部,其余三个是虚部。

关于四元数

在 3D 图形编程中,使用四元数(quaternions)来表示旋转是非常高效和常见的。四元数避免了万向节锁问题(gimbal lock),并且对于插值和组合旋转非常有效。

给定一个旋转轴 (nx,ny,nz) 和一个旋转角度 m(通常以弧度表示,比如θ),四元数 q q q 可以表示为:
在这里插入图片描述

​其中 , c o s ( θ / 2 ) cos( θ/2 ) cos(θ/2)是实部 , i i i, j j j, k k k是四元数的虚部单位。

四元数的数学本质与原理

在这里插入图片描述
教程,可以直接定位到 02 : 52 02:52 02:52

四元数与编程

在实际应用中,你通常会使用一个四元数库,这样你就不需要直接处理这些数学细节。例如,在 C + + C++ C++ and O p e n g l Opengl Opengl中,如果你使用了像 G L M GLM GLM这样的数学库,你可以这样创建一个四元数来表示旋转:

#include <glm/glm.hpp>
#include <glm/gtc/quaternion.hpp>

// 定义旋转轴和角度
glm::vec3 axis(nx, ny, nz);
float angle = m; // 弧度

// 创建四元数
glm::quat myQuaternion = glm::angleAxis(angle, axis);

补充一点,右上角的那个小t表示什么?

那个小写的 “T” 在这个上下文中代表 “转置”(Transpose)。当你把四元数或任何向量写成行向量的形式(水平排列),在其后加上 “T” 意味着你将其转换列向量(垂直排列)。这是线性代数中的一个标准表示方法。
在这里插入图片描述

在计算机图形学和矩阵运算中,这种表示方法很常见,特别是在处理转换矩阵和向量时。

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏过山河,踏过海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值