淡江大學覺生紀念圖書館 (TKU Library)
進階搜尋


下載電子全文限經由淡江IP使用) 
系統識別號 U0002-2002201217155500
中文論文名稱 支援物件導向技術的繪圖程式庫
英文論文名稱 A Graphic Library supporting Object-Oriented technique
校院名稱 淡江大學
系所名稱(中) 資訊管理學系碩士班
系所名稱(英) Department of Information Management
學年度 100
學期 1
出版年 101
研究生中文姓名 江國豪
研究生英文姓名 Guo-Hao Jiang
學號 697630076
學位類別 碩士
語文別 中文
口試日期 2011-12-24
論文頁數 106頁
口試委員 指導教授-廖賀田
委員-梁德昭
委員-高明達
委員-莊庭瑞
委員-王建民
中文關鍵字 物件導向技術  繪圖程式庫  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
論文使用權限
  • 同意紙本無償授權給館內讀者為學術之目的重製使用,於2017-02-24公開。
  • 同意授權瀏覽/列印電子全文服務,於2017-02-24起公開。


  • 若您有任何疑問,請與我們聯絡!
    圖書館: 請來電 (02)2621-5656 轉 2281 或 來信