前言
正如Milo Yip大神所说的这个标题事实上是存在问题的:矩阵是用于表示变换而不是坐标的。再了解了矩阵的作用之后,我们就要继续思考为什么变换要使用一个4×4的矩阵而不是3×3的矩阵呢?是不是多此一举呢?下面我们就来聊聊这个话题。
齐次坐标
为了解决三维矢量和4×4矩阵相乘的问题,我们机智的为三维矢量添加了第四个分量,这样之前的三维矢量(x,y,z)就变成了四维的(x,y,z,w),这样由4个分量组成的矢量便被称为齐次坐标。需要说明的是,齐次坐标(x,y,z,w)等价于三维坐标(x/w,y/w,z/w),因此只要w分量的值是1,那么这个齐次坐标就可以被当作三维坐标来使用,而且所表示的坐标就是以x,y,z这3个值为坐标值的点。
因此,为了和4×4矩阵相乘,我们的P1点坐标就变成了(x1,y1,z1,1)。而矩阵等式也变成了下面这个样子:
我们再将这个新的矩阵等式和平移的数学表达式做一番对比:
x2 = a·x1 + b·y1 + c·z1 + d
x2 = x1 + Δx
y2 = e·x1 + f·y1 + g·z1 + h
y2 = y1 + Δy
z2 = i·x1 + j·y1 + k·z1 + l
z2 = z1 + Δz
1 = m·x1 + n·y1 + o·z1 + p
通过对比x2,我们可以发现a=1,b=0,c=0,d=Δx;
对比y2,也可以发现e=0,f=1,g=0,h=Δy;
再对比z2,可以确定i=0,j=0,k=1,l=Δz;
最后还可以根据表达式求出m=0,n=0,o=0,p=1;
这样,我们就求出了我们的4×4的平移矩阵:
这样,就通过一个4×4矩阵整合了平移矩阵、旋转矩阵。
更详细原文请参照知乎回答(此文章仅作记录使用):云计算与数字孪生