眾所周知的是,小x特別喜歡由線條組成的形狀,比如說凸多邊形,這一天小x正在紙上畫著喜歡的凸多邊形,這時候小y走了過來,指著一張上的多邊形,問小x知道這個圖形的面積麼,這可把小x難住了,聰明的你一定能夠幫助小x解決這個問題,對吧~
多邊形上最多有六個點,順時針or逆時針給定每個點座標(兩個整數表示),保證無多餘的點並且沒有點重複。
輸出乙個整數,表示凸多邊形的面積,結果四捨五入。示例1
複製
3複製0 01 0
2 2
1示例2
複製
5複製-4 -2
1 -3
3 2-1 4
-4 2
35由於給出的點是相對於我們的座標原點的座標,每個點實際上我們可以當作乙個頂點相對於原點的向量,如下圖所示:
p(0,0)對應的頂點向量分別為:a(x0,y0),b(x1,y1),…,g(x6,y6)
另外,△pa
b的向量面積即為s⃗
△pab
=12∗
pa→∗
pb→=
12∗(
xayb
−xby
a)且多邊形面積為:s總
=∑k=
1ns⃗
△pxy
=12∗
∑k=0
n(xk
yk+1
−xk+
1yk)
根據上述公式可以直接求出多邊形的**從而避免了邊長的複雜計算。
#include #include #include using namespace std;
int main()
sum += (x*y0-y*x0);
printf("%d\n",int(abs(sum)/2+0.5));
}return 0;
}
求任意多邊形面積(凹多邊形和凸多邊形)
遇到問題 已知多邊形的各個左邊點,要求多邊形的面積 然後我搜尋了下看到這篇文章 這個人說的不多,但是簡單明瞭 首先已知各定點的座標分別為 x1,y1 x2,y2 x3,y3 xn,yn 則該多邊形的面積公式為 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 xk yk 1 xk 1 yk...
多邊形與多邊形 位置關係的判斷
c 判斷點的位置方法一 public intisleft point p0,point p1,point p2 private boolpointinfences point pnt1,point fencepnts else if wn 0 return false else return tru...
驗證多邊形是否為凸多邊形
驗證多邊形是否為凸多邊形 2108 shape of hdu include define debug 0 int crossmulti int x0,int y0,int x1,int y1,int x2,int y2 int main int n,i int f x,f y 第1個點 int s...