三维平移
在三维齐次坐标表示中,任意点P = (x, y, z)通过将平移距离tx, ty,和tz加到P的坐标上而平移到位置P’= (x', y', z'):
或:
在三维空间中,对象的平移通过平移定义该对象的各个点然后在新位置重建该对象而实现。对 于由一组多边形表面表示的对象,可以将各个表面的顶点进行平移如下图,然后重新显示 新位置的面。
typedef GLfloat Matrix4x4 [4][4];
/* Construct the 4 by 4 identity matrix.*/
void matrix4x4SetIdentity (Matrix4x4 matIdent4x4)
{
GLint row, col;
for (row = 0; row < 4; row++)
for (col = 0; col < 4; col++)
matIdent4x4 [row][col] = (row == col);
}
void translate3D (GLfloat tx, GLfloat ty, GLfloat tz)
{
Matrix4x4 matTransl3D;
/* Initialize translation matrix to identity. */
matrix4x4SetIdentity(matTransl3D);
matTransl3D [0][3] = tx;
matTransl3D [1][3] = ty;
matTransl3D [2][3] = tz;
}
三维平移变换的逆变换使用二维中同样的方法获得,即取平移距离tx,ty和tz的负值。这将生 成相反的平移,而平移矩阵和其逆矩阵之积是单位矩阵。