遊戲開發中的數學和物理算法(18):縮放
Sx代表x方向的縮放量,Sy代表y方向的縮放量。當Sx=Sy代表等比例縮放。
例如:將下圖的矩形ABCD放大3倍。
虛線框表示的爲縮放前的圖形,實線框表示爲縮放後的圖形。
2D縮放在計算機中的實現:
2D縮放:
Matrix3X1 scale2DByMultiplication(Matrix3X1 start, float dx, float dy)
{
Matrix3X3 temp;
Matrix3X1 result;
//Zero out the matrix.
temp = createFixed3X3Matrix(0);
//setup the 3x3 for multiplication;
temp.index[0][0] = dx;
temp.index[1][1] = dy;
temp.index[2][2] = 1;
result = multiplyMatrixNxM(temp,start);
return result;
}
3D縮放的數學形式:
Matrix4X1 scale3DByMultiply(Matrix4X1 start, float dx, float dy, float dz)
{
Matrix4X4 temp;
Matrix4X1 result;
//Zero out the matrix to make sure nothing is left uninitialized.
temp = createFixed4X4Matrix(0);
//setup the 3x3 for multiplication;
temp.index[0][0] = dx;
temp.index[1][1] = dy;
temp.index[2][2] = dz;
temp.index[3][3] = 1;
result = multiplyMatrixNxM(temp,start);
return result;
}