遊戲開發中的數學和物理算法(18):縮放

遊戲開發中的數學和物理算法(18):縮放

2D縮放的數學形式

Sx代表x方向的縮放量,Sy代表y方向的縮放量。當Sx=Sy代表等比例縮放。

例如:將下圖的矩形ABCD放大3倍。



設A(10,10),那麼縮放後的A',將通過下列計算獲得A'(30,30)。


同理可以計算出縮放後的B'(150,30), C'(150,120),和 D'(30,120)。如圖:

虛線框表示的爲縮放前的圖形,實線框表示爲縮放後的圖形。

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縮放的數學形式:

3D縮放在計算機中的實現:
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;
}


發佈了7 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章