壹、 軟體資訊
- 題目:Voronoi Diagram
- 作者:呂宗霖 (Tsung-Lin Lu)
- 系級:中山資工所碩一
- 學號:M093040114
- 程式語言:C++
- 開發框架:Qt 6.1.3
貳、軟體規格書
一、輸入與輸出方式
(一)輸入方式
- 滑鼠:使用滑鼠點擊畫布。
- 座標:在添加介面中,輸入(x, y)值。
- 隨機:在添加介面中,指定點數,以隨機產生數點。
- 輸入檔 (.txt):在檔案介面中,點擊『讀取輸入檔』。#字號為註解;一個數字為點數,當一個數字為0時,代表結束;兩個數字為(x, y)值,細節請看pplab連結。
- 輸出檔 (.txt):在檔案介面中,點擊讀取輸出檔。
(圖一)輸入檔格式 |
(二)輸出方式
- 在檔案介面中,點擊『輸出文字檔』,即會輸出txt文字檔。
- 點格式:以P開頭,後面接(x, y)。
- 邊格式:以E開頭,後面接(x1, y1, x2, y2)。
- 座標以字典序 (lexical order)排序,即x1 ≤ x2或x1 = x2 & y1 ≤ y2。
(圖三)主介面圖示 |
- 軟體名稱:Voronoi Diagram
- 畫面:600 x 600
- 添加點:滑鼠位置、(x, y)輸入、點數量
- 執行:執行、下一組資料、一步一步執行、清空畫面
- 檔案:讀取輸入檔、讀取輸出檔、輸出文字檔
- 點資料:點數、點座標
- 邊資料:邊數、邊座標
- 狀態列
(二)功能
- 添加點→滑鼠位置:顯示滑鼠在畫面中的座標位置。
- 添加點→(x, y)輸入:指定(x, y)座標的方式添加點。
- 添加點→點數量:指定點數的方式隨機添加點。
- 執行→執行:一次執行完畢。
- 執行→下一組資料:如果使用『讀取輸入檔』功能,顯示輸入檔中下一組點資料。
- 執行→一步一步執行:一步一步執行,主要分成八步驟。(1)畫left convex hull、(2)畫left Voronoi、(3)畫right convex hull、(4)畫right Voronoi、(5)畫merged convex hull、(6)畫hyperplane、(7)消線、(8)完成。
- 執行→清空畫面:清除畫面上的邊和點。
- 檔案→讀取輸入檔:使用輸入檔 (.txt)的方式添加點。
- 檔案→讀取輸出檔:使用輸出檔 (.txt)的方式添加點或邊。
- 檔案→輸出文字檔:將Voronoi Diagram存成txt文字檔。
三、測試規劃
- 1點:不做任何動作。
- 2點:找出2點中垂線。
- 3點:找出3點外心,並以外心為起點,往外畫出三條中垂線。
- 4~6點:分割 (divide)與合併 (merge)一次,有機會出錯或進入無限迴圈。
- 7點以上:很大機率會進入無限無圈,請小心服用。
參、軟體說明
一、軟體安裝
- Windows:不需安裝,直接在VoronoiDiagram資料夾中,點擊VoronoiDiagram.exe,切勿將exe檔和資料夾分離,因為資料夾中還有其他執行必要的檔案。
- MacOS:不需安裝,直接點擊VoronoiDiagram.app,此應用程式為intel CPU架構。
二、軟體使用
1. 添加點:可以使用五種方式,在畫面中添加點。
(圖四)添加六個點 |
2. 執行Voronoi:可以用執行或一步一步執行。
(圖五)一步一步執行,現在為第7步:消線。 綠線為merged convex hull、藍線為hyperplane。 |
3. 輸出文字檔:使用檔案→輸出文字檔,來保存Voronoi Diagram結果,文字檔格式如介面中點資料與邊資料所示。
相關文章
- Voronoi Diagram 1:軟體使用說明
- Voronoi Diagram 2:程式設計
- Voronoi Diagram 3:實驗結果
- Voronoi Diagram 4:結論與心得
- VoronoiDiagram source code
- 演算法設計與分析|系統性的思維|楊昌彪
附錄
- Window10執行檔
- macOS執行檔
- 程式原始碼
- 程式原始碼合併檔
- 測試資料(含輸入檔與輸出檔)
參考資料
- 楊昌彪。2021。演算法 Term Project 實施要點。PPLab [Accessed by Dec. 2021]
- 蘇王奕翔。2018。以C#實作Voronoi Diagram演算法。GitHub [Accessed by Dec. 2021]
- opengenus。2021。Divide and Conquer algorithm to find Convex Hull [Accessed by Dec. 2021]
- 呂宗霖。2021。NSYSU_VoronoiDiagram。GitHub [Accessed by Dec. 2021]
留言
張貼留言