发布网友 发布时间:2022-04-23 22:38
共2个回答
热心网友 时间:2023-09-17 00:26
我理解的是,如果你有一个向量a = (x,y,z)用来表示点坐标,
你可以定义一个平移向量△a = (△x,△y,△z),
那么平移后的坐标可以用向量a' = a + △a = (x+△x,y+△y,z+△z)表示,
这是利用了矩阵加法来表示一个位移。
可能因为矩阵乘法可以表示一个坐标点相对于原点的缩放、旋转吧,有的人就想连平移也统一成矩阵乘法,就出现了这篇博客讲的四维齐次空间表示平移:网页链接
根据我的理解,4x4的矩阵中,左上角的3x3是一个单位矩阵,与(x,y,z)相乘之后仍然是(x,y,z),作矩阵乘法的过程中(坐标向量的行元素分别乘以变换矩阵的第一列的元素再相加就是新的x)加上第四行的(dx,dy,dz)就达到了上面提到的向量a + △a的效果,
所以我看,要轻松地用矩阵乘法表示平移,变换矩阵至少要用4x3的矩阵表示吧?
但是矩阵乘法严格规定了A乘以B时,要满足A的列数等于B的行数,现在B的行数已经决定是4了,那A的列数不能是3,只能是4,这样表示点的坐标就是(x,y,z,w)了,
另外,如果A的形状是1x4(一行四列),B的形状是4x3,的确就可以作乘法运算了呢,但是算出来的形状却是1x3的,跟变换之前的A维度都不同了,所以B得加一列,变成4x4,这样就能确保一步到位,比如GPU平移一个点三次,你只需要反复作三次矩阵乘法运算,不用额外的指令来改变A的维度。
至于怎么解释这个第四个坐标(w),那就是另一个问题了。
这是我的理解,仅供参考哦
补充:线性代数中对于坐标变换的定义我记得是y=Cx,其中y、x各是n维列向量,C为n阶方阵,如果遵从这样的定义来找出一个表示平移变换的方阵C,使得对于任意的x,y=Cx表示x平移变换后的y,应该是找不出用3阶矩阵和3维列向量表示3维坐标的平移变换的,只能用4阶矩阵和4维列向量表示3维坐标的平移变换。
热心网友 时间:2023-09-17 00:26
3X3矩阵可以表示二维的平移变换
如果要进行三维即立体的平移变换
就需要使用4×4矩阵来进行
即对n维矩阵平移变换的时候
需要新引入一个维度
这样才能得到效果