系統識別號 | U0002-2002201217155500 |
---|---|
DOI | 10.6846/TKU.2012.00820 |
論文名稱(中文) | 支援物件導向技術的繪圖程式庫 |
論文名稱(英文) | A Graphic Library supporting Object-Oriented technique |
第三語言論文名稱 | |
校院名稱 | 淡江大學 |
系所名稱(中文) | 資訊管理學系碩士班 |
系所名稱(英文) | Department of Information Management |
外國學位學校名稱 | |
外國學位學院名稱 | |
外國學位研究所名稱 | |
學年度 | 100 |
學期 | 1 |
出版年 | 101 |
研究生(中文) | 江國豪 |
研究生(英文) | Guo-Hao Jiang |
學號 | 697630076 |
學位類別 | 碩士 |
語言別 | 繁體中文 |
第二語言別 | |
口試日期 | 2011-12-24 |
論文頁數 | 106頁 |
口試委員 |
指導教授
-
廖賀田(htliaw@mail.tku.edu.tw)
委員 - 梁德昭 委員 - 高明達 委員 - 莊庭瑞 委員 - 王建民 |
關鍵字(中) |
物件導向技術 繪圖程式庫 3D OpenGL JOGL |
關鍵字(英) |
Object-Oriented technique Graphic Library 3D OpenGL JOGL |
第三語言關鍵字 | |
學科別分類 | |
中文摘要 |
本論文提出一套以Java語言實作之繪圖程式庫,透過物件導向技術將低階繪圖API封裝成高階的使用方式,讓使用者在使用上能夠較直覺化,進而減輕在繪製圖像時的繁雜工作。 本程式庫以物件導向的概念來建立三維場景,並且提供了三維物件的建立與管理,以及攝影機景觀模擬。另外也實作了三維物件反應事件機制,方便使用者撰寫互動程式。 |
英文摘要 |
This thesis comes up with a Graphic Library in Java. Through Object-Oriented technique, wrapper low-level API become have a high-level use environment. User can intuitive use it to build their graphics program. This Graphic Library build the 3D scene through Object-Oriented perspective, that suppors 3D object constuct and management, simulate camera viewing. In addition, we discussed and implement 3D object event listener, though that user can easy to implement their 3d object interaction program. |
第三語言摘要 | |
論文目次 |
目錄 1 緒論 1 1.1 研究動機 1 1.2 研究目的 1 1.3 論文組織 1 2 相關研究 2 2.1 繪圖程式庫的分類 2 2.2 OpenGL 2 2.3 Java3D 3 2.4 物件導向技術 3 3 背景知識 5 3.1 世界環境 5 3.2 三維物件 5 3.3 座標系統 6 3.4 攝影機與投影 7 3.5 座標變換 11 3.6 OpenGL的使用 12 3.7 Java3D的使用 19 4 TWGL繪圖程式庫 28 4.1 程式庫架構 28 4.2 攝影機的景觀 29 4.3 世界與物件 31 4.4 三維物件的繪製 34 4.5 三維物件反應事件 35 5 實際應用 42 5.1 多面體實例 42 5.2 三維拖曳實例 48 5.3 一維/二維拖曳實例 55 5.4 摩天輪實例 67 5.5 甲烷(CH4)實例 77 6 本程式庫與其他程式庫的比較 85 6.1 本程式庫與OpenGL的差異 85 6.2 本程式庫與Java3D的差異 86 7 結論與展望 87 7.1 總結 87 7.2 後續發展 87 參考資料 88 附錄A:數學物件 90 一、 向量 90 二、 矩陣 91 三、 仿射變換(affine transformation) 93 附錄B:三維物件反應事件 96 一、 三維物件反應事件之辨別 96 附錄C:彩圖 99 圖目錄 圖 1、世界座標系與攝影機座標系相對關係 7 圖 2、視窗座標系 7 圖 3、平行投影至投影平面 8 圖 4、平行投影可視區域 9 圖 5、透視投影至投影平面 9 圖 6、透視投影可視區域 10 圖 7、三維物件頂點繪製座標變換示意圖 11 圖 8、picking選取區域 13 圖 9、OpenGL pickDemo實例執行畫面 18 圖 10、OpenGL pickDemo實例output畫面 18 圖 11、場景圖 20 圖 12、場景圖實例執行畫面 21 圖 13、Java3D MousePickApp實例執行畫面 24 圖 14、Java3D SimpleBehaviorApp實例執行畫面 27 圖 15、繪圖程式庫架構圖 28 圖 16、View3D類別繼承圖 29 圖 17、World3D類別繼承圖 31 圖 18、Obj3DManager類別繼承圖 32 圖 19、ZManager類別繼承圖 32 圖 20、Obj3D類別繼承圖 32 圖 21、平行投影的pickRay 36 圖 22、透視投影的pickRay 36 圖 23、三維物件平行拖曳平面示意圖 37 圖 24、三維物件球體拖曳示意圖 38 圖 25、三維物件的反應事件示意圖 39 圖 26、Mouse3DEvent類別繼承圖 40 圖 27、多面體實例執行結果 47 圖 28、三維拖曳實例執行結果 53 圖 29、拖曳至右下方 54 圖 30、使用滑鼠滾輪做深度移動 54 圖 31、一維/二維拖曳實例三維物件階層圖 55 圖 32、一維/二維拖曳實例 65 圖 33、轉動(左)與移動(右)操作 66 圖 34、伸縮Rod子物件 66 圖 35、對TArm拖曳複合旋轉Rod與伸長Rod長度操作 66 圖 36、摩天輪實例三維物件階層圖 67 圖 37、摩天輪實例 76 圖 38、甲烷(CH4)實例三維物件階層圖 77 圖 39、甲烷(CH4)實例(單一景觀) 84 圖 40、甲烷(CH4)實例(多重景觀) 84 表目錄 表一、OpenGL繪製紅線之實例 12 表二、OpenGL pick之實例 17 表三、場景圖實例程式 20 表四、Java3D pick實例程式 23 表五、Java3D 繪製紅線實例 25 表六、Java3D Behavior實例程式 27 表七、demoManyPlh程式碼 44 表八、PlhPanel程式碼 46 表九、Cuboid程式碼 52 表十、TopLevelObj程式碼 57 表十一、 Base程式碼 59 表十二、TBase程式碼 60 表十三、Arm程式碼 61 表十四、Rod程式碼 63 表十五、TArm程式碼 64 表十六、demoFerrisWheel程式碼 68 表十七、FWPanel程式碼 69 表十八、FerrisWheel程式碼 70 表十九、Pillar程式碼 71 表二十、Nail程式碼 71 表二十一、Frame程式碼 73 表二十二、Wheel程式碼 74 表二十三、Basket程式碼 76 表二十四、CH4程式碼 79 表二十五、ChemAtom原始碼 80 表二十六、C_ChemAtom原始碼 81 表二十七、H_ChemAtom原始碼 82 表二十八、ChemLink原始碼 83 表二十九、TwGL繪製紅線之實例 85 |
參考文獻 |
[1] Donald Hearn and M. Pauline Baker, “Computer Graphics with OpenGL, Third Edition”, Prentice Hall , 2003. [2] OpenGL.org , OpenGL, http://www.opengl.org, 1997 [3] Richard S Wright, Jr and Michael Sweet, OpenGL SuperBible, Second Edition, Waite Group, 1999 [4] Dennis J Bouvier, Getting Started with the Java 3D API, Sun Microsystems, 2009 [5] Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young, Ph.D., Jim Conallen, Kelli A. Houston, Object-Oriented Analysis and Design with Applications, Addison Wesley, 2007 [6] Dave Shreiner (Author), The Khronos OpenGL ARB Working Group, OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1 (7th Edition), Addison Wesley, 2007 [7] Jim X. Chen, Edward J. Wegman, Foundations of 3D Graphics Programming Using JOGL and Java3D (Second Edition), Springer, 2008 [8] James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes, Computer Graphics: Principles and Practice in C (2nd Edition), Addison Wesley, 1997 [9] OpenGL Architecture Review Board, Dave Shreiner, OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4 (4th Edition), Addison Wesley, 2004 [10] Edward Angel, Interactive Computer Graphics: A Top-Down Approach using OpenGL (4th Edition), Addison Wesley, 2006 [11] 向賢偉, 《以OpenGL建構的3D導覽系統》, 碩士論文, 淡江大學資訊管理研究所, 2008 [12] 劉定衡,《全尺度宇宙儀》, 碩士論文, 淡江大學資訊管理研究所, 2009 [13] 張弘毅,《支援遠近效果的繪圖程式庫》, 碩士論文, 淡江大學資訊管理研究所, 2010 [14] JogAmp.org , Java OpenGL, http://jogamp.org/, 2011 [15] Oracle.com , Java SE Desktop Technologies, http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html, 2011 |
論文全文使用權限 |
如有問題,歡迎洽詢!
圖書館數位資訊組 (02)2621-5656 轉 2487 或 來信