欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移

程序员文章站 2022-07-12 23:22:46
...

三维平移

在三维齐次坐标表示中,任意点P = (x, y, z)通过将平移距离tx, ty,和tz加到P的坐标上而平移到位置P’= (x', y', z'):

计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移
计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移
我们可以用下面等式中的矩阵形式来表达三维平移操作。

计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移
但现在坐标位置P和P’用4元列向量的齐次坐标表示,且变换操作T是4 x 4矩阵: 
计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移

或:
计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移

    在三维空间中,对象的平移通过平移定义该对象的各个点然后在新位置重建该对象而实现。对于由一组多边形表面表示的对象,可以将各个表面的顶点进行平移如下图,然后重新显示新位置的面。

计算机图形学(四)几何变换_5_三维空间的几何变换_1_三维平移
下面的程序段给出了输人一组平移参数后对平移矩阵的构造。为了在这些过程中构造该矩阵,
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的负值。这将生成相反的平移,而平移矩阵和其逆矩阵之积是单位矩阵。



相关标签: 三维平移