description
乙個封閉的多邊形定義是被有限個線段包圍。線段的相交點稱作多邊形的頂點,當你從多邊形的乙個頂點沿著線段行走時,最終你會回
到出發點。
凸多邊形(convex)想必大家已經很熟悉了,下圖給出了凸多邊形和非凸多邊形例項。
這裡討論的是在平面座標的封閉凸多邊形,多變形的頂點乙個頂點在原點(x=0,y=0).圖2顯示的那樣。這樣的圖形有兩種性質。
第一種性質是多邊形的頂點會在平面上少於等於三個象限,就如圖二那樣,第二向縣裡面沒有多邊形的點(x<0,y>0)。
為了解釋第二種性質,假設你沿著多邊形旅行,從原點(0,0)出發遍歷每個頂點一次,當你遍歷到除原點(0,0)時候,從這一點畫一條和原點(0,0)的斜線。計算這種斜率。當計算完所有的斜率時候,這些斜率組成公升序或降序順序。
如圖三所示。
input
輸入包含多組測試資料。
第一行輸入乙個整數
n(50>n>0),其中n
表示多邊形頂點的個數,當
n為0時表示結束。緊跟
n行輸入在平面中多邊形的頂點整數
x,y(-999,其中第一行是原點(
0,0),其他的多邊形頂點可能不是順序給出。沒有頂點在
x,y座標軸上,沒有三個頂點共線。
output
輸出多邊形的頂點,每個頂點一行,原點(
0,0)首先輸出。其他頂點的輸出構成沿多邊形(逆時針方向)構成一條旅遊路線。輸出格式為(
x,y)如例項
sample input
10
0 0
70 -50
60 30
-30 -50
80 20
50 -60
90 -20
-30 -40
-10 -60
90 10sample output
(0,0)
(-30,-40)
(-30,-50)
(-10,-60)
(50,-60)
(70,-50)
(90,-20)
(90,10)
(80,20)
(60,30)分析:極角排序。
code:
view code
#include#include
#include
struct p
p[1991];
double mul(p p1,p p2,p p3)
double dis(p a,p b)
int cmp(const
void*a,const
void*b)
int main()
return0;}
c 線向量生成多邊形 C 多邊形求角 例項說
呼叫示例 anglecalculation.cxpoint p1 new anglecalculation.cxpoint 112,12 p2 new anglecalculation.cxpoint 68,51 p3 new anglecalculation.cxpoint 0,0 double ...
凸多邊形三角劃分
傳送門 loj公升級版 這道題雖然是基礎的區間dp,但是還是很值得一說的。我們用dp i j 表示第i個點到第j個點劃分的最大值。注意我們只列舉了兩個端點,第三個頂點是我們列舉的那個k,之後發現k這個頂點可以把整個區間分成兩塊,我們就可以進行區間dp了。只不過這道題要使用高精度。需要自己過載一下,對...
多邊形上點的順序排序 如何通過點建立多邊形?(上)
第一步我們需要將現有的火山噴發點轉為線,可以使用 點集轉線 工具。線欄位表示這些點會根據不同的位置建立單獨的閉合線段,排序字段表示在這個位置的多個點要如何連線,結果如下 結果會變成下面這樣 舉個簡單的例子,比如下面這兩張圖,點的順序不一樣,結果就完全不同了。因此,這幾個引數的設定是非常重要的!02 ...