多邊形面積 ssl1213 計算幾何

2021-07-22 22:10:19 字數 2154 閱讀 1951

輸入乙個多邊形,求面積。

第一行是乙個整數n,代表圖形的頂點數(1<=n<=1000).

接下來的n行,每行一對實數,代表頂點座標(xi,yi)。每個樣例的圖形由第乙個頂點連線第二個頂點,第二個頂點連線第三個頂點……最後第n個頂點連線第乙個頂點形成封閉多邊形。

輸出圖形面積或字串」impossible」

如果圖形是乙個多邊形,計算他的面積(精確到小數點後兩位)。如果輸入的頂點不能構成多邊形(也就是說,一條邊和另一條邊不相連的邊相交,例如,四條線段的圖形,第一條線段和第三條線段相交),就輸出」impossible」。指出圖形不可能是多邊形。如果頂點的數量不足以構成乙個封閉的多邊形,也輸出」impossible」

n只有1000,列舉不同邊判斷相交,叉積算面積

判斷兩線段是否相交:

資料坑會有0 (零個端點是毛多邊形啊!!!!)

然而這是一道pascal的主場(pascal的速度快)

const

dy:array[1..9] of longint=(1,1,1,0,0,0,-1,-1,-1);

dx:array[1..9] of longint=(-1,0,1,-1,0,1,-1,0,1);

var n:longint;

x,y:array[0..1010] of real;

function

banana

(x1,y1,x2,y2,x3,y3:real):real;

begin

banana:=(x1-x2)*(y3-y2)-(y1-y2)*(x3-x2);

end;

procedure

init;

var i,j,k:longint;

ans:real;

x0,y0:real;

x1,y1:real;

x2,y2:real;

begin

readln(n);

if n<3

then

begin

writeln('impossible');

exit;

end;

readln(x2,y2);

x[1]:=x2; y[1]:=y2;

x0:=x2; y0:=y2;

x1:=0; y1:=0;

for i:=2

to n do

begin

x1:=x2; y1:=y2;

readln(x2,y2);

x[i]:=x2;

y[i]:=y2;

ans:=ans+(x1*y2)-(x2*y1);

end;

for i:=1

to n-1

dofor j:=i+1

to n-1

dobegin

if (banana(x[j],y[j],x[j+1],y[j+1],x[i],y[i])*banana(x[j],y[j],x[j+1],y[j+1],x[i+1],y[i+1])<0) and (banana(x[i],y[i],x[i+1],y[i+1],x[j],y[j])*banana(x[i],y[i],x[i+1],y[i+1],x[j+1],y[j+1])<0)

then

begin

write('impossible');

exit;

end;

end;

i:=n;

for j:=1

to n-1

doif (banana(x[j],y[j],x[j+1],y[j+1],x[i],y[i])*banana(x[j],y[j],x[j+1],y[j+1],x[1],y[1])<0) and (banana(x[i],y[i],x[1],y[1],x[j],y[j])*banana(x[i],y[i],x[1],y[1],x[j+1],y[j+1])<0)

then

begin

write('impossible');

exit;

end;

ans:=ans+(x2*y0)-(y2*x0);

ans:=abs(ans);

writeln(ans/2:0:2);

end;

begin

init;

end.

多邊形面積 ssl1213 計算幾何

中學生傑利陶醉於數學研究 他思考的問題對於專家而言可能太多簡單,但作為乙個15歲的業餘愛好者,他做得非常棒 他太熱衷思考數學問題,以至於輕易就學會了試用數學方法來解決碰到的問題 一天,他看到桌上的一張紙 他四歲的妹妹瑪利在上央畫了一些線 那些線恰好構成了乙個凹多邊形,如下圖 棒極了 他想,這些多邊形...

計算多邊形的面積

題目 輸入乙個點列,順次連線成乙個封閉多邊形,計算多邊形的面積 分析 方法一,計算面積可以考慮定積分的形式,定積分有正有負,順次求和,重複部分相互抵消,最後剩下的總面積的絕對值就是多邊形的面積。從線性積分後的結果可以容易的看出,直線段的積分實際上就是求該直線段與x軸所圍成的區域的梯形的面積int p...

計算幾何 多邊形面積

彙總篇 計算幾何彙總 規定頂點逆時針方向的多邊形面積為正 取原點0 0,0 s a,b,c,d s o,a,b s o,b,c s o,c,d s o,d,a 圖中o在外部,obc,ocd,oda 全部是正的,加起來構成了5變形 obcda 的面積,但 oab是負面積,因此最後剛好等於 abcd 的...