【视觉高级篇】22 # 如何用仿射变换来移动和旋转3D物体?
创始人
2024-03-08 12:07:51

说明

【跟月影学可视化】学习笔记。

三维仿射变换:平移

对于平移变换来说,如果向量 P(x0​x_0​x0​​, y0y_0y0​​, z0​z_0​z0​​) 沿着向量 Q(x1x_1x1​​, y1​y_1​y1​​, z1​z_1​z1​​) 平移,只需要让 P 加上 Q,就能得到变换后的坐标。

在这里插入图片描述

三维仿射变换:缩放

让三维向量乘上标量,就相当于乘上要缩放的倍数。

在这里插入图片描述

可以使用齐次矩阵来表示三维仿射变换,通过引入一个新的维度,就可以把仿射变换转换为齐次矩阵的线性变换。

在这里插入图片描述

三维物体的旋转变换比较复杂一点,下面先了解一下欧拉角。

什么是欧拉角?

中文维基百科:欧拉角

莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可以用三个基本旋转矩阵来决定。换句话说,任何关于刚体旋转的旋转矩阵是由三个基本旋转矩阵复合而成的。

比如飞机的姿态可以由这三个欧拉角来确定,绕 x 轴的旋转角度(翻滚机身)、绕 y 轴的旋转角度(俯仰),以及绕 z 轴的旋转角度(偏航)来表示。

在这里插入图片描述

具体的表示公式就是 Rx、Ry、Rz,这三个旋转矩阵相乘。

在这里插入图片描述

这里采用的是 y−x−z 顺规。

下面是欧拉角的顺规表示方式:

在这里插入图片描述
采用 y−x−z 顺规的欧拉角得到的旋转矩阵如下:
在这里插入图片描述

使用欧拉角来旋转几何体

让几何体绕 y 轴、x 轴、z 轴转过 α、β、γ 角。

下面是三维物体的旋转变换矩阵:

绕y轴旋转变换矩阵:
在这里插入图片描述
绕x轴旋转变换矩阵:
在这里插入图片描述
绕z轴旋转变换矩阵:

在这里插入图片描述

如何使用欧拉角来旋转几何体?

OGL 框架的几何网格(Mesh)对象直接支持欧拉角(默认欧拉角顺规是 y−x−z),用对象的 rotation 属性(它是一个三维向量)就可以设置欧拉角。

下面实现可以随意调整欧拉角的飞机模型效果:偏航(改变 alpha)、翻滚(改变 beta)和俯仰(改变 theta)

需要用到的资源

  • 飞机模型json跟图片
  • dat-gui:JavaScript Controller Library

如何使用欧拉角来旋转几何体

效果如下:

在这里插入图片描述

如何理解万向节锁?

使用欧拉角来操作几何体的方向有个缺陷叫做万向节锁 (Gimbal Lock)

什么是 Gimbal ?

平衡环架(英语:Gimbal),是一具有枢纽的装置,作用是使得一物体能以单一轴旋转。由彼此垂直的枢纽轴所组成的一组三只平衡环架,则可使架在最内的环架的物体维持旋转轴不变,而应用在船上的陀螺仪、罗盘、饮料杯架等用途上,而不受船体因波浪上下震动、船身转向的影响。

在这里插入图片描述

什么是万向节锁 (Gimbal Lock) ?

在特定的欧拉角情况下,姿态调整的自由度丢失就是万向节锁 (Gimbal Lock) 。

我们调整 beta 的角度改成 90,不管改变 alpha 还是改变 theta,飞机都绕着 y 轴旋转,始终处于一个平面上。本来飞机姿态有 x、y、z 三个自由度,现在 y 轴被固定了,只剩下两个自由度了,这就是万向节锁。

在这里插入图片描述

要避免万向节锁的产生,可以使用比较好的一种数学模型:四元数(Quaternion)

使用四元数来旋转几何体

四元数是一种高阶复数,一个四元数可以表示为:q = w + xi + yj + zk

  • i、j、k 是三个虚数单位,w 是标量
  • 满足 i2i^2i2 = j2j^2j2 = k2k^2k2 = ijk = −1

所谓单位四元数,就是其中的参数满足 x2x^2x2+y2y^2y2+z2z^2z2+w2w^2w2=1。单位四元数对应的旋转矩阵如下:

在这里插入图片描述

四元数与轴角

所谓轴角,就是在三维空间中,给定一个由单位向量表示的轴,以及一个旋转角度 ⍺,以此来表示几何体绕该轴旋转 ⍺ 角。

在这里插入图片描述
绕单位向量 u 旋转 ⍺ 角,对应的四元数可以表示为:q = (usin(⍺/2), cos(⍺/2))

下面实现一下用四元数让飞机沿着某个轴旋转:


用四元数让飞机沿着某个轴旋转

在这里插入图片描述

拓展阅读

  • 四元数与三维旋转
  • 三维旋转:欧拉角、四元数、旋转矩阵、轴角之间的转换

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...