1. 程式人生 > >計算機圖形學(四)幾何變換_5_三維空間的幾何變換_1_三維平移

計算機圖形學(四)幾何變換_5_三維空間的幾何變換_1_三維平移

三維平移

在三維齊次座標表示中,任意點P = (x, y, z)通過將平移距離tx, ty,和tz加到P的座標上而平移到位置P’= (x', y', z'):

我們可以用下面等式中的矩陣形式來表達三維平移操作。

但現在座標位置P和P’用4元列向量的齊次座標表示,且變換操作T是4 x 4矩陣: 

或:

    在三維空間中,物件的平移通過平移定義該物件的各個點然後在新位置重建該物件而實現。對於由一組多邊形表面表示的物件,可以將各個表面的頂點進行平移如下圖,然後重新顯示新位置的面。

下面的程式段給出了輸人一組平移引數後對平移矩陣的構造。為了在這些過程中構造該矩陣,
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的負值。這將生成相反的平移,而平移矩陣和其逆矩陣之積是單位矩陣。