凸包知識介紹

2022-09-24 04:30:13 字數 1217 閱讀 4446

給定二維平面上的一堆點中,凸包就是將最外層的點連線起來構成的凸多邊形,它能包含點集所有的點

如上圖所示,點集中外層的點構成凸多邊形就構成了能夠包含所有點的凸包,其中連線相鄰頂點構成的邊越來越平緩,或者說斜率越來越小構成的一組點叫做上凸殼,而相鄰的邊,斜率越來越大的一組點叫做下凸殼

關於斜率,同學們可以認為是直線與橫軸在第一象限的夾角,夾角越小,斜率越小,夾角越大,斜率越大,換句話說:斜率越小,越貼近x軸,斜率越大,越貼近y軸。

如圖所示,開始只有頂點\(a、b\)構成的凸包,然後加入第三點\(c_1\),顯然\(bc_1\)的斜率是高於\(ab\)的,因此\(ab\),\(bc_1\)構成了乙個下凸殼

但是如果新加的點不是\(c_1\)而是\(c_2\),\(bc_2\)的斜率小於\(ab\),那麼\(ab\)和\(bc2\)就不能構成下凸殼了,因為不能作為點集的下邊界,不能包含在\(ab\)下面卻在\(ac_2\)上面的點,(這樣就不是凸包,而是凹包了!)

因此,加入\(c_2\)後,\(ac_2\)將成為下凸殼新的邊界了。對於平面上的三點\(a(x_1,y_1),b(x_2,y_2),c(x_3,y_3)\),(其中\(x_1 < x_2 < x_3,y_1 < y_2 < y_3\)),\(ab\)的斜率小於\(bc_1\)的斜率才能使得\(ab\)、\(bc_1\)形成下凸殼。

以本節的三道題為例,寫一下我對凸包在此專題中的作用:

凸包入門知識

平面凸包 定義 對乙個簡單多邊形來說,如果給定其邊界上或內部的任意兩個點,連線這兩個點的線段上的所有點都被包含在該多邊形的邊界上或內部的話,則該多邊形為凸多邊形 在解決平面凸包下面介紹了兩種演算法 一 graham 掃瞄法,執行時間為o nlgn 二 jarvis步進法,執行時間為o nh h為凸包...

BZOJ3348 Cows 凸包 凸包面積

題目鏈結 題意 求凸包,求面積,然後給面積除以50,向下取整。用的andrew演算法,即跑兩次,先求出下凸包,然後再求出上凸包。求面積時候應該用凸包陣列求,結果寫成了原來的點的陣列,調了20多分鐘。弱智 2 telekinetic forest guard include include inclu...

poj1113 求凸包 計算凸包周長

經典的求凸包題,模板題。要求用資源最少,那肯定這個多邊形是個凸多邊形,也就是凸包。所以先求出凸包,計算它的周長。還有就是這道題所說的,要離城牆l遠,其實就是在加上乙個圓的周長,圓的半徑就是l。都說到這了,這道題還差什麼?還差乙個經典的凸包模板!哈哈 如下 include include includ...