APP下载

基于OpenGL几何变换函数的动画实例

2018-01-09黄绍龙

电脑知识与技术 2017年34期
关键词:动画

黄绍龙

摘要:该文介绍了使用OpenGL进行基本几何变换和复合变换的方法,并通过定时器函数实现了模拟天体的公转、自转及脉冲缩放的动画。

关键词: 齐次坐标;几何变换;复合变换;动画

中图分类号:TP317.4 文献标识码:A 文章编号:1009-3044(2017)34-0261-02

Abstract: This article introduces the geometric transformation and composite transformation with the functions of OpenGL. It also designs an animation which emulates celestial bodys revolution, rotation and scale in pulse cycle with the help of the timer function.

Key words: Homogeneous coordinate; geometric transformation; composite transformation; animation

OpenGL(Open Graphics Library)定義了一个跨编程语言、跨平台的专业图形编程接口,是一个功能强大且调用方便的底层图形库。OpenGL图形库是计算机图形学课程教学的有力工具。本文通过使用其中的几何变换函数实现模拟天体运动的仿真动画。

1 预备知识

1.1 基本几何变换及实现形式

平移、旋转和缩放变换是几何变换的三种基本形式。如果使用齐次坐标表示,它们均可以写成形如[P′=M?P]的形式,即几何变换矩阵乘以坐标列向量。

1.2 复合几何变换

1.4 动画原理

使用双缓冲机制,固定的时间间隔对基本几何变换函数的参数以确定的步长进行修改,然后对帧缓存进行刷新操作,用户可以观察到几何体在窗口内连续且平滑地变化。

2 动画实例的实现

2.1 实现目标

一个黑色正方形在白色背景下绕窗口中心顺时针公转,同时绕自身的中心顺时针自转,并且一个自转周期内大小由初始值渐变为初始值的[50%]。公转周期是自转周期的4倍。[1]

2.2 过程分析

要求实现的动画包含公转、自转和脉冲缩放变化,较为复杂,可分步骤实现。

(1) 实现公转

使用矩形命令绘制的正方形的中心和原点重合,先平移出半径(设为180个像素),再绕窗口中心顺时针旋转(角度从[0°]到[-360°]变化,旋转参数变化的步长值为-[1°]).设置定时器函数以100毫秒的间隔刷新帧缓存。

(2) 实现自转

上述公转过程中的正方形的朝向不停地变化。如图1所示:

由图形易知:

若正方形绕窗口中心顺时针公转[θ]时,则它绕自身中心顺时针旋转的角度也是[θ].

按以下过程确定自转参数值:

①正方形绕窗口中心顺时针公转[θ]后,使正方形绕自身中心逆时针旋转[θ],则它的朝向始终保持不变;

②由实现目标可知,自转速度是公转速度的4倍,即公转角度为[θ]时,对应的自转角度为[4θ].若为顺时针自转,自转参数为:[-θ+4θ=3θ];若为逆时针自转,自转参数为:[-θ-4θ=-5θ]。

③正方形绕自身的中心旋转可通过复合变换实现:首先平移正方形使其中心与原点重合,然后绕原点顺时针旋转[3θ],最后反方向平移使正方形回到它应处的位置。平移参数可由公转半径和公转角度[θ]确定。

(3) 实现渐变的脉冲缩放

每一个公转的[14]周期,正方形边长由初始大小渐变为初始大小的一半,这种往复变化也称为脉冲缩放变化。公转角度的步长为-[1°],对应了90个刷新周期,边长值的变化量为50%,要实现大小的渐变,缩放因子变化的步长为[0.590]。

2.3 代码实现

3 总结

几何变换是计算机图形学课程的重点,也是难点,难在应用。本文的实例综合运用了平移、旋转和缩放三种基本几何变换以及它们的复合变换。通过设计、分析和实现较为复杂的动画,可锻炼学生的动手能力,提高学习兴趣,深化知识的理解。

参考文献:

[1] Donald Hearn.Computer Graphics with OpenGL[M].北京:电子工业出版社,2012.2:256.

[2] 伏玉琛。计算机图形学—原理方法与应用[M].武汉:华中科技大学出版社,2003.2.endprint

猜你喜欢

动画
Clifford hits the big screen
做个动画给你看
动画作品
动画发展史
Mg动画在慕课中的应用及其制作
动画批评融入动画教育的思考
暖心动画:最好的礼物
我是动画迷
动画总动员