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


系統識別號 U0002-2407201702020700
中文論文名稱 支援遠端介面的繪圖程式庫
英文論文名稱 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日。
論文使用權限
  • 同意紙本無償授權給館內讀者為學術之目的重製使用,於2022-07-24公開。
  • 同意授權瀏覽/列印電子全文服務,於2022-07-24起公開。


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