5.7.2 实现缩放变换
更新于 2026年10月10日
版权声明
5.7.2 实现缩放变换
通过缩放变换可以改变物体的大小,把当前矩阵与一个表示沿各个坐标轴对物体进行拉伸、收缩和反射的矩阵相乘。缩放的矩阵就可以简单地表示为如图5-8所示。

图5-8 缩放矩阵图
在图5-8所示的缩放矩阵图中,包含了x、y和z一共3个缩放因子,分别对应x轴、y轴和z轴,缩放变换是关于原点的缩放。
在OpenGL ES中,通过方法glScalex(int x,int y,int z)和glScalef(float x,float y,float z)实现物体的缩放变换,表示把当前矩阵与一个表示沿各个轴对物体进行拉伸、收缩和放射的矩阵相乘,这个物体中的每个点的x、y和z坐标与对应的x、y和z参数相乘。
如果缩放值大于1.0它就拉伸物体;如果缩放值小于1.0它就收缩物体;如果缩放值为-1.0,它就反射这个物体。(1.0,1.0,1.0)是单位缩放值。
在下面的实例中,演示了在Android手机屏幕中实现缩放变换效果的方法。

1)编写实例文件ddd.java,具体实现流程如下。
■ 开启一个自动缩放椭球体大小的线程。
■ 分别改变椭球体的缩放值和设置椭球缩放的范围(https://www.daowen.com)
■ 重写方法onDrawFrame(GLlo gl)以绘制椭球体。 文件ddd.java的主要代码如下。



2)编写文件suoCH.java,在此定义绘制椭圆球的类suoCH,主要实现代码如下




执行会在屏幕中实现一个具有自动缩放功能的椭圆,效果如图5-9所示

图5-9 执行效果