3D数学基础及图形开发(四)矩阵的线性变换-旋转

2016-12-27  本文已影响99人  Levi_Wan

矩阵的线性变换可以分为:旋转,缩放,投影,镜像,切变等。每一种线性变换对应着相应的矩阵。

旋转

Paste_Image.png Paste_Image.png

可以看见x轴的单位向量p(1,0)旋转了θ角度以后变成了(cosθ,sinθ),y轴的单位向量q(0,1)旋转了θ角度以后变为了(-sinθ,cosθ)。

那我们现在可以开始构建我们的旋转矩阵(2D):

第一行控制x轴的单位向量的旋转(cosθ,sinθ)
第二行控制y轴的单位向量的旋转(-sinθ,cosθ)


Paste_Image.png

如果是3D的旋转呢?

这时我们就要区分是左手坐标系,还是右手坐标系了,因为不是的坐标系旋转的方向不是不同的,通过左手法则来判断旋转方向。(我们一般都是围绕坐标轴进行旋转)

Paste_Image.png Paste_Image.png

这时我们如果要进行旋转就要先判别是绕着哪一个坐标系进行旋转。

绕x轴进行3D旋转

Paste_Image.png Paste_Image.png

绕y轴进行3D旋转

Paste_Image.png Paste_Image.png

绕z轴进行3D旋转

Paste_Image.png Paste_Image.png
当然你也可以绕任意轴旋转(但计算量会相当的复杂,计算机中最能理解的旋转还是需要欧拉角进行旋转)
Paste_Image.png
我们为什么在程序设计中会使用坐标轴旋转而不使用任意轴旋转呢?: Paste_Image.png

以这个机器人为例,这个机器人由无数个点组成,当我们需要旋转它的时,如果每一个点都需要用这么复杂的公式来计算的话会非常的慢。

编程的实现:

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png
上一篇下一篇

猜你喜欢

热点阅读