计算几何(ComputationalGeometry).doc

计算几何(ComputationalGeometry).doc

計算幾何(Computational Geometry) 計算幾何,顧名思義就是用計算機來解幾何問題,而這些幾何問題一般來說只會包含一些基本的幾何元素,像是點、線段、多邊形等等。而在做這類題目時,常常需要用到一些數學的工具,所以我們就先來看一些基本的工具。 點 設兩個點和 則的長度 =,向量AB = 向量內積 設兩個向量和的夾角為θ 則內積,內積為0表示兩個向量垂直。 向量外積 設兩個向量和的夾角為θ 則外積值為 外積為0表示兩向量平行,為正代表B在A的逆時針方向,而外積的絕對值為兩向量所張成的平行四邊形面積。 有了這些工具後,我們就可以來看一些基本的問題了。 ※例題1 ─ 給定一條直線的線上兩點P,Q,以及另外兩個點A,B,請你判斷A,B是否在直線的不同側? ※例題2 ─ 給你一個線段以及一個點,試判斷此點是否在線段上。 ※例題3 ─ 給你兩條線段以及,請你判斷這兩條線段是否相交。 這一題自然是可以直接用解析法,就是直接將兩直線方程式列出後聯立解,然後再來判斷交點在不在線段上。但是缺點是因為要用到除法,會有浮點數誤差。所以我們希望能有一個方法,當點的座標都是整數時,可以完全不用浮點數計算的方法。 於是就有了這個方法:若在不同側且在不同側,或者若某個點在相對的另一條線段上,那麼線段相交。這樣可以只用到加減乘和比較就可以判斷兩線段有沒有交點。 多邊形 多邊形是由一些線段所組成的封閉折線。如果多邊形上的任兩條邊皆不相交,那麼此多邊形稱為單純多邊形。一個單純多邊形當中,如果任意兩點之連線線段皆全部落在多邊形內,那麼我們稱這樣的多邊形為凸多邊形。 在座標平面上計算多邊形的面積有簡單的公式可算。若一個多邊形的點按照逆時針順序為,並令。那麼此多邊形的面積為: ※例題4 ─ The Art Gallery ( ACM 10078 ) 給你一個多邊形,請問它是不是一個凸多邊形? ※例題5 ─ Polygons ( ACM 634 ) 給你一個多邊形和一個點,請問這個點在多邊形的外部、邊上還是內部? 掃描法 掃瞄法也是一種計算幾何上常用的手段,通常是先將所有東西依某個特定的順序排序後,按照順序處理。 ※例題6 ─ 平面上有n個點,我們說一個點(a,b)是”極大的”,表示其他n-1個點中不存在滿足x≧a、y≧b的點(x,y),請找出所有極大的點。 ※例題7 ─ 給你平面上的n條線段,請問這n條線段是否有兩條相交? ※例題8 ─ Birthday Cake ( ACM 10167 ) 給你n個草莓的位置,草莓的座標皆為整數,請你畫一條直線過(0,0),並且讓兩邊的草莓數量相同。 ※例題9 ─ 下界函數 ( TIOJ 1148 ) 第一象限上有一些線段,請問躺在x軸往上看,能看到多少線段? 凸包 平面上有一些點,我們可以找到一個最小的凸多邊形,使得這些點都在這個凸多邊形的邊上或內部,我們把這個凸多邊形叫做這些點的凸包。 計算凸包的方法有很多種,底下介紹其中兩種常用的方法: Graham’s scan 顯然,所有點中y座標最小(如果y座標相同則x座標最小)的點一定為凸包的頂點。 於是我們以這點為基準,將所有點以逆時針方式加入一個堆疊中,並且在過程中保持堆疊內的點是目前處理過的點的凸包,以下是虛擬碼: Graham-Scan(Q) 令p0表示Q中y座標最小的點,若有許多選擇那麼選x座標最小的點。 將其他的點X依照與p0X並且與正x軸夾角的大小由小至大排序(可利用外積來比較),令為。 Push(p0, S) //將p0放進堆疊S中,一開始S為空 Push(p1, S) Push(p2, S) for i ← 3 to m do while 從堆疊中第二個點經過堆疊中最上面的點轉向至pi時非左轉 do Pop(S) //將最上面的點拿出 Push(pi, S) return S 這樣的時間複雜度為O(nlgn)。 Jarvis’s march 基本想法為以禮物包裝的方式。從底部的頂點p0開始,分成左邊和右邊處理。處理右邊時,找到一個點p1使得p0p1與x軸夾角最小,顯然p1也屬於凸包;以相同方式繼續尋找下一個點,直到找到的pk是Q中最高的點為止,左邊也用類似的方式處理即可。令h為凸包上頂點的總數,那麼這個演算法的複雜度為O(nh)。 ※例題10 ─ 最遠距離點對問題 給你平面上n個點,請找出距離最遠的兩個點。 ※例題11 ─ 最小外接矩形問題 給你平面上n個點,請找出能蓋住這n個點的最小矩形。 ※例題12 ─ 運河 ( TIOJ 1041 ) 平面上有一些紅色點和一些藍色點,請你畫兩條平行線將兩種顏色的點分開,而且平行線之間距離越大越好,請問這個距離最大是多少? 皮克定理 我們定義格子點為x和y座標都是整數的點,皮克定理告訴我

文档评论(0)

1亿VIP精品文档

相关文档