日期:2014-05-19  浏览次数:20996 次

(100分)如何求多边形的面积?
给定一组x,y坐标(x1,y1,x2,y2,.......xn,yn),如何求以这些点围成的多边形的面积,公式是什么?代码如何组织?

------解决方案--------------------
给个算法你:
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;
}
------解决方案--------------------
//这个算法是算法版大牛海星原创

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();
}

------解决方案--------------------
我汗到死,MS这是中学数学问题,事实上只要有小学数学,便能自己推导算法,因为只要知道两个事实:
1、任何多边型都能拆分成有限多个三角形。
2、三角形的面积等于三角形底乘以高除以二。

如果是凸多边形,则在多边形内任取一点向各个顶点作线段则能够将这个多边形拆分成多个三角形……