v4vendeta's homepage

Home | About | Contacts | Blogs| Others

光栅化软渲染器_3D数学

矩阵变换

平移

平移操作可以把空间中的一个点沿方向移动一段距离,需将点p左乘变换矩阵,

平移后点p的坐标为


旋转

二维旋转

绕原点的二维旋转

我们要将p绕旋转到点,即需要一个矩阵R,使得

解得

绕任意点的二维旋转

  1. 将旋转点x移动到原点
  2. 绕原点进行二维旋转
  3. 将x移动回原来的位置

三维旋转

空间直角坐标系通常有两种表示方式,左手坐标系和右手坐标系,也是DirectX和OpenGL中不同的地方,本文中的坐标系均以右手坐标系为例

绕轴的旋转

解得

解得

解得

将上述三个旋转矩阵组合起来

这样的旋转也叫Euler旋转

沿任意轴的旋转/Rodrigues’ Rotation Formula

和二维绕任意点旋转类似,我们将旋转轴旋转至与坐标轴重合(以轴为例),然后绕轴旋转,再旋转轴旋转回原来的位置

整个流程如下

最终旋转矩阵


缩放

缩放矩阵的形式如下,可以将某个点沿轴分别缩放


reference:

《Real-Time Rendering Fourth Edition》 https://blog.csdn.net/qq_28773183/article/details/80083607

https://blog.csdn.net/csxiaoshui/article/details/65446125

https://www.cnblogs.com/wtyuan/p/12324495.html

.. ... ...