这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」
作为一名优秀的开发者,对于技术的探求应该是永无止步的,如何让自己更进步,那就只有不停的学习,不停的充电.而这些都是说起来容易做起来难,坚持才是难的地方 --蛙哈哈
如果我能更新完这一系列,我希望掘金能给我颁发一个劳模奖.
1.1缩放矩阵
假设向量 V1 = (x, y, z), 沿着 x, y, z轴 分别缩放 kx, ky, Kz , 缩放之后的向量为V2 ,也就是将 V1 的每一个分量分别乘以对应的缩放系数,因此:
V2 = (kxx, kyy, Kzz)
但在3D中,考虑到矩阵变换的统一性,最终并不是直接使用标量与向量进行乘法运算,而是通过矩阵进行变换的,咱们再用矩阵的思想进行分析,沿着每个坐标轴缩放之后, x^'^, y^'^, **z^'^**的三个基向量分别是:
x^'^ = kx(1, 0, 0) = (kx, 0, 0)
y^'^ = ky(0,1, 0) = (0, ky, 0)
z^'^ = kz(0, 0, 1) = (0, 0, kz)
将缩放之后的基向量纵向排列构建成一个 3 X 3的矩阵, 这个矩阵即为缩放矩阵:
1.2平移矩阵
假设点 P1 = (x1, y1, z1),将其 x 方向移动 dx 距离, 然后向y方向 移动dy 距离, 最后向 z 方向移动了 dz 距离, 于是点P2,计算公式如下:
P2 = P1 + (dx, dy, dz) = (x1, y1, z1)+(dx, dy, dz) = (x1+dx, y1+dy, z1+dz)
但是在3D中,所有的变换都是通过矩阵完成的,平移自然也不例外
由于 3 X 3的矩阵无法显示平移,因此需要将矩阵的行数和列数再扩展一维,变成一个 4 X 4的齐次矩阵, 在三维单位矩阵 I3的基础上进行扩展,对角元素保持为1,然后将三个轴向的平移距离卸载扩展出来的第四行上,并将第四列剩余的元素填充为0,最终的平移矩阵为:
所以就可以得出向量平移的公式: