§ 瀏覽學位論文書目資料
  
系統識別號 U0002-2407201702020700
DOI 10.6846/TKU.2017.00846
論文名稱(中文) 支援遠端介面的繪圖程式庫
論文名稱(英文) A Graphic Library supporting Remote View
第三語言論文名稱
校院名稱 淡江大學
系所名稱(中文) 資訊管理學系碩士班
系所名稱(英文) Department of Information Management
外國學位學校名稱
外國學位學院名稱
外國學位研究所名稱
學年度 105
學期 2
出版年 106
研究生(中文) 林錦坤
研究生(英文) JIN-KUN LIN
學號 604630136
學位類別 碩士
語言別 繁體中文
第二語言別
口試日期 2017-06-04
論文頁數 50頁
口試委員 指導教授 - 廖賀田
委員 - 陳國棟
委員 - 衛信文
關鍵字(中) 繪圖程式庫
MVC
遠端介面
Socket
JOGL
關鍵字(英) Graphic Library
MVC
RemoteView
Socket
JOGL
第三語言關鍵字
學科別分類
中文摘要
本論文依據指導教授所提供的設計,實作了一套支援遠端介面的繪圖程式庫。其中以系上實驗室所開發的TwGL 3D繪圖程式庫為基礎,進一步製作遠端畫面的輸出入。讓客戶程式的系統模型可以隱藏在伺服器端,而確實保護程式的技術機密。另外, 客戶程式由於區分模型與使用介面,亦能提升整個軟體的可維護性。
本程式庫以Java Socket做為網路傳輸套件,並承襲MVC的架構來實作整個繪圖程式庫。其中包含了攝影機、資料傳輸以及三維繪圖管道等機制。
英文摘要
Based on the design provided by the advisor, this paper implements a graphic library supporting remote view. We make the remote view’s input and output based on the TwGL 3D graphics library which developed by the department’s laboratory. Making the client system model can be hidden in the server side, and indeed protect the technical secrets of the program. In addition, the client program distinguishes the model and the user interface, so can enhance the maintenance of the entire software.
Our library use Java Socket as a network transmission kit, and inherited the MVC architecture to implement the entire graphic library.Which contains the camera, data transmission and three-dimensional draw pipeline and other mechanisms.
第三語言摘要
論文目次
目錄
第一章 緒論	1
1.1	研究背景與動機	1
1.2	研究目的	1
1.3	論文組織	2
第二章 文獻探討	3
2.1	繪圖API的探討	3
2.2	3D繪圖pick的探討	4
第三章 背景知識	5
3.1	三維世界	5
3.2	三維物件	5
3.3	攝影機與投影	5
3.4	座標系統	6
3.5	座標變換	7
3.6	Java Socket的使用	7
3.7	MVC	13
第四章 繪圖程式庫	14
4.1	系統架構圖	14
4.2	三維繪圖管道(GX3D)	15
4.3	攝影機與景觀	17
4.4	系統運作流程(V_Cmd)	21
4.5	系統運作流程(C_Req)	25
4.6	伺服器端物件	28
4.7	使用者端關閉的對應處理類別	28
4.8	困難點	29
 第五章 實際應用	30
5.1	使用說明	30
5.2	甲烷(CH4)實例	33
5.3	土星(Saturn)實例	36
 第六章 結論與展望	41
6.1	結論	41
6.2	後續發展	42
參考文獻	43
附錄A 輸出介面	45
附錄B 網路輸出輸入串流	46
附錄C Socket外覆類別	48
附錄D GX3D函數列表	49

圖目錄
圖 3-1 座標變換	7
圖 3-2 伺服器端接收使用者端的連線Request(from Java Tutorials)	8
圖 3-3 伺服器允許與使用者端的連線(from Java Tutorials)	8
圖 4-1 系統架構圖	14
圖 4-2 GX3D相關類別圖	15
圖 4-3 GX3D類別圖	15
圖 4-4 RenderGX3D類別圖	16
圖 4-5 AgentGX3D類別圖	16
圖 4-6 View3D相關類別圖	17
圖 4-7 Gl3DPanel類別圖	17
圖 4-8 View3D類別圖	18
圖 4-9 RenderView3D類別圖	19
圖 4-10 UserView3D類別圖	19
圖 4-11 View3DWithWorldI類別圖	20
圖 4-12 HostView3D類別圖	21
圖 4-13 AgentView3D類別圖	21
圖 4-14 系統運作流程圖(V_Cmd)	22
圖 4-15 系統運作流程圖(C_Req)	25

表目錄
表 3-1 BufferedOutputStream與BufferedInputStream的輸出入函數	9
表 3-2 建立ServerSocket物件並等候使用者端連線	10
表 3-3 接收使用者端輸入及對應輸出	11
表 3-4 建立連線、輸出資料、開Thread以供接收伺服器資料	12
表 3-5 接收伺服器資料並印出	13
表 4-1 RenderView3D供客戶實作函數	19
表 4-2 設定屬性類型的繪圖指令列表	23
表 4-3 二維繪製類型的繪圖指令列表	23
表 4-4 三維繪製類型的繪圖指令列表	24
表 4-5 特殊類型的繪圖指令列表	24
表 4-6 系統要求的控制要求列表	26
表 4-7 攝影機類型的控制要求列表	27
表 4-8 繪製要求類型的控制要求列表	27
表 4-9 事件類型的控制要求列表	27
表 5-1 AgentView3D提供客戶實作函數列表	30
表 5-2 AgentJob提供客戶實作函數列表	31
表 5-3 ServerJob提供客戶使用與實作函數列表	31
表 5-4 UserView3D提供客戶實作函數列表	32
表 5-5 UserReveiveJob提供客戶使用函數列表	32
表 5-6 CH4AgentView實例程式碼	33
表 5-7 CH4AgentJob實例程式碼	33
表 5-8 CH4Server實例程式碼	34
表 5-9 CH4UserView實例程式碼	35
表 5-10 CH4User實例程式碼	36
表 5-11 SaturnAgentView實例程式碼	37
表 5-12 SaturnAgentJob實例程式碼	37
表 5-13 SaturnServer實例程式碼	38
表 5-14 SaturnUserView實例程式碼	39
表 5-15 SaturnUser實例程式碼	40
表 8-1 PrintableI類別	45
表 9-1 TxONetStream類別	46
表 9-2 TxINetStream類別	47
表 10-1 TxSocket類別	48
表 10-2 TxServerSocket類別	48
表 11-1 GX3D函數列表	50
參考文獻
[1] 張弘毅, “支援遠近效果的繪圖程式庫”, 碩士論文, 淡江大學資訊管理研究所, 2010。
[2] 江國豪,  “支援物件導向技術的繪圖程式庫”, 碩士論文, 淡江大學資訊管理研究所, 2011。
[3] Frank Buschmann, “Pattern-Oriented Software Architecture, A System of Patterns”, Wiley, v1, p.125-143, 1996。  
[4] Wikipedia, “Model–view–controller”, 網址: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller, 上網時間: 2016年12月14日。      
[5] The JavaTM Tutorials: Lesson: “All About Sockets”, 網址: https://docs.oracle.com/javase/tutorial/networking/sockets/, 上網時間: 2016年12月14日。
[6] Heh-Tyan Liaw, “TwFC”,網址: http://www.openfoundry.org/of/projects/1758/download, 上網時間: 2016年12月13日。 
[7] 黃嘉輝,Java網路程式設計,文魁資訊股份有限公司,2006年7月。
[8] Kenneth L. Calvert, Michael J.Donahoo, “TCP/IP Sockets in Java: Practical Guide for Programmers”, Morgan Kaufmann, 2002.  
[9] Oracle co. , “Java 8 API – Oracle Help Center”, 網址: https://docs.oracle.com/javase/8/docs/api。 
[10] Wikipedia, “OpenGL”, 網址: https://zh.wikipedia.org/wiki/OpenGL, 上網時間: 2017年1月2日。
[11] JogAmp.org, “Java OpenGL”, http://jogamp.org/, 上網時間: 2017年1月2日。
[12] Jame D. Foley, Andries van Dam, Steven K.Feiner, John F.Hughes,  “Computer Graphics: Principles and Practice in C (2nd Ed.)”, Addison Wesley, 1997. 
[13] Wikipedia, “DirectX”, 網址: https://zh.wikipedia.org/wiki/DirectX, 上網時間: 2017年3月28日。
[14] 廖賀田, "Design of Remote View", unpublished private communications, 2016年8月至2017年1月。 
[15] Tao He, “In Computer Graphics Human-computer Interaction Research of 3D Pick up Method”(中文論文), Sichuan Water Conservancy Vocational College, Chengdu 612231, China, 2013
[16] Jia-hua Zhang, Cheng Liang, Gui-qing Li, “3D Primitive Picking on GPU”, College of Computer Science and Engineering, South China University of Technology, Guangzhou Guangdong 510640, China, 2007. 
[17] Oracle co. , “Trail: Creating a GUI With JFC/Swing” , 網址: https://docs.oracle.com/javase/tutorial/uiswing/。 
[18] Microsoft Co. “What Is a Render Target?”, 網址: https://msdn.microsoft.com/en-us/library/bb976073(v=xnagamestudio.31).aspx, 上網時間: 2017年3月29日。 
[19] Wikipedia, “Virtual function”, 網址: https://en.wikipedia.org/wiki/Virtual_function, 上網時間: 2017年4月10日。
論文全文使用權限
校內
紙本論文於授權書繳交後5年公開
同意電子論文全文授權校園內公開
校內電子論文於授權書繳交後5年公開
校外
同意授權
校外電子論文於授權書繳交後5年公開

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