44矩阵和透视除法,请好心人花点时间

时间:2022-06-28 14:52:07
先说明我有数学功底,包括线性代数和高等数学,理解力也很好。
44矩阵的第4行第4列到底是个什么东西,还有透视除法是怎么得到近大远小的?
我知道这要多点文字解释。
请高手费点时间解释,你的十分钟可以省下至少我好几天的时间。

1 个解决方案

#1


看楼主近期发了几个帖子,都是跟opengl有关的
做三维的东西,你找些关于"齐次坐标"的资料看看
本来三维世界(三维坐标)的坐标变换,用3*3的矩阵已经可以描述了

平移就是 [x,y,z]'+[dx,dy,dz]' ([]'表示转置)
旋转和缩放就是 M×[x,y,z]' (M分别是对应的旋转缩放矩阵)

但是,这是平移和旋转要分别描述,一个加法,一个乘法.
齐次坐标就是为了解决三维坐标换问题的"统一"描述,
在齐次坐标中,平移,旋转,缩放这三个变换都可以统一用矩阵乘法来描述
关于4*4的变换矩阵中每一个元素对应的意义,你可以自己做一次(用笔记算,不要写代码)矩阵乘法


|m00 m01 m02 m03|       |x|
|m10 m11 m12 m13|   \/  |y|             
|m20 m21 m22 m23|   /\  |z|
|m30 m31 m32 m33|       |1|(如果是向量则是0)


然后将结果的个分量写出来,你就会发现4*4的意义了,如果没有额外的第四个量w(也就是齐次坐标),那么这三种变换是无法统一使用矩阵乘法来解决的.

再给你3个图
44矩阵和透视除法,请好心人花点时间

44矩阵和透视除法,请好心人花点时间

44矩阵和透视除法,请好心人花点时间

#1


看楼主近期发了几个帖子,都是跟opengl有关的
做三维的东西,你找些关于"齐次坐标"的资料看看
本来三维世界(三维坐标)的坐标变换,用3*3的矩阵已经可以描述了

平移就是 [x,y,z]'+[dx,dy,dz]' ([]'表示转置)
旋转和缩放就是 M×[x,y,z]' (M分别是对应的旋转缩放矩阵)

但是,这是平移和旋转要分别描述,一个加法,一个乘法.
齐次坐标就是为了解决三维坐标换问题的"统一"描述,
在齐次坐标中,平移,旋转,缩放这三个变换都可以统一用矩阵乘法来描述
关于4*4的变换矩阵中每一个元素对应的意义,你可以自己做一次(用笔记算,不要写代码)矩阵乘法


|m00 m01 m02 m03|       |x|
|m10 m11 m12 m13|   \/  |y|             
|m20 m21 m22 m23|   /\  |z|
|m30 m31 m32 m33|       |1|(如果是向量则是0)


然后将结果的个分量写出来,你就会发现4*4的意义了,如果没有额外的第四个量w(也就是齐次坐标),那么这三种变换是无法统一使用矩阵乘法来解决的.

再给你3个图
44矩阵和透视除法,请好心人花点时间

44矩阵和透视除法,请好心人花点时间

44矩阵和透视除法,请好心人花点时间