游戏开发中的数学和物理算法(18):缩放

本文详细介绍了2D及3D图形缩放的基本原理与实现方法,包括缩放矩阵的构造与应用,以及如何通过矩阵乘法实现图形的等比与非等比缩放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

游戏开发中的数学和物理算法(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缩放在计算机中的实现:


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缩放在计算机中的实现:


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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值