1. 程式人生 > >求任意多邊形面積(凹多邊形和凸多邊形)

求任意多邊形面積(凹多邊形和凸多邊形)

遇到問題:已知多邊形的各個左邊點,要求多邊形的面積

然後我搜索了下看到這篇文章:https://blog.csdn.net/tianyuhang123/article/details/56094559

這個人說的不多,但是簡單明瞭:

首先已知各定點的座標分別為(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)+...+(Xn*y1-x1*Yn) ]

這個面積公式可能算出來是正的,也有可能是負的,所以要加絕對值。

最後的面積為:s=abs(s)。

他還附上了C++的程式碼,有需要的可以看下。

我以為這是算凸多邊形面積的公式,心想能不能也有算凹多邊形面積的公式。然後我搜到了這篇文章:

http://www.cnblogs.com/TenosDoIt/p/4047211.html

這個人較詳細的說明了上面公式也是可以應用於凹多邊形的。

在搜尋過程中,還發現了另外一種方法:皮克公式。

https://zh.wikipedia.org/wiki/%E7%9A%AE%E5%85%8B%E5%AE%9A%E7%90%86

這個方法也可以求任意多邊形面積。不過有限制條件,而且需要柵格的那種。