空間結構與計算幾何
幾何學是數學中最古老且最實用的分支之一,研究空間中點、線、面、體的性質與關係。在電腦科學領域,幾何學特別應用於計算幾何、電腦圖學、機器人路徑規劃、地理資訊系統(GIS)、碰撞檢測等領域。
計算幾何的核心問題是如何有效地表示和處理幾何物件,以及設計解決幾何問題的演算法。這些問題通常涉及大量的點、線或多邊形,需要在時間和空間複雜度之間取得平衡。
點與向量:在二維平面中,點用座標 (x,y) 表示。向量運算包括加法、純量乘法、內積(點積)和外積(叉積)。向量內積可用於計算兩個向量之間的夾角和投影。
有向面積與行列式:三個點組成的三角形有向面積為行列式值的一半,用於判斷點的相對位置。
距離計算:常見的距離度量包括歐氏距離、曼哈頓距離、切比雪夫距離、閔可夫斯基距離。
凸包是計算幾何中最基礎的問題之一,是包含所有點的最小凸多邊形。
Graham 掃描是 O(n log n) 的凸包建構演算法:先找到最下方的點,按極角排序所有點,再用堆疊逐步建構凸包。
Jarvis march(又稱 gift wrapping)的時間複雜度為 O(nh),h 為凸包上的點數。當凸包上的點很少時效率更高。
凸包應用於碰撞檢測、形態識別、路徑規劃、統計學等領域。
點定位:給定一個平面分割,判斷一個查詢點落在哪個區域內。
射線法:從查詢點發出一條射線,計算其與多邊形邊的交點數量。奇數個交點表示在內部,偶數表示在外部。
其他經典計算幾何問題還包括最近點對、線段相交檢測、Voronoi 圖等。