黃紹龍
摘要:該文介紹了使用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