游戏开发中的数学和物理算法(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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值