§ 瀏覽學位論文書目資料
  
系統識別號 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
論文全文使用權限
校內
紙本論文於授權書繳交後5年公開
同意電子論文全文授權校園內公開
校內電子論文於授權書繳交後5年公開
校外
同意授權
校外電子論文於授權書繳交後5年公開

如有問題,歡迎洽詢!
圖書館數位資訊組 (02)2621-5656 轉 2487 或 來信