方法一:算法
float area_of_polygon(int vcount,float x[],float y[])
{
int i;
float s;
if (vcount <3) return 0;
s=y[0]*(x[vcount-1]-x[1]);
for (i=1;i <vcount;i++)
s+=y[i]*(x[(i-1)]-x[(i+1)%vcount]);
return s/2;
}spa
方法二:object
算法版大牛海星原創float
public float area_of_polygon(Point[] APoints)
{
if (APoints.Length < 3) return 0;
float s = APoints[0].Y * (APoints[APoints.Length - 1].X - APoints[1].X);
for (int i = 1; i < APoints.Length; i++)
s += APoints[i].Y * (APoints[(i - 1)].X -
APoints[(i + 1) % APoints.Length].X);
return System.Math.Abs(s / 2);
}
private void button1_Click(object sender, EventArgs e)
{
Text = area_of_polygon(new Point[] {
new Point(0, 0), new Point(0, 10),
new Point(10, 10), new Point(10, 0)}).ToString();
}方法
方法三:co
生成多邊形,其實就是指定這些頂點的順序
在肯定了順序後, 假定是p0, p2, ...., pn-1
那麼多邊形的面積能夠簡單的按照以下公式計算
float area = 0;
for (int i=0, j=1; i <n; i++, j++)
{
j = j % n; //由於當j=n時候,須要讓j迴歸1
area += p[i].x*p[j].y - p[i].y*p[j].x;
}
area = fabs( area * 0.5);//取1/2再取絕對值,由於求出來的面積值可能爲負(各頂點順時針排列的時候)生成