计算任意多边形面积的算法
方法1:
用这个方法吧:
我们都知道已知A(x1,y1)B(x2,y2)C(x3,y3)三点的面积公式为
|x1 x2 x3|
S(A,B,C) = |y1 y2 y3| * (当三点为逆时针时为正,顺时针则为负的)
|1 1 1 |
对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有:
S(A1,A2,A3,、、、,An)
= abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))
P是可以取任意的一点,用(0,0)就可以了。
还有一个方法:
任意一个简单多边形,当它的各个顶点位于网格的结点上时,它的面积数S=b/2+c+1
其中:b代表该多边形边界上的网络结点数目
c代表该多边形内的网络结点数目
所以把整个图形以象素为单位可以把整个图形分成若干个部分,计算该图形边界上的点b和内部的点c就得到面积数S了,然后把S乘以一个象素的面积就是所求的面积了。
多边形面积的计算公式如下:设有n个点(x[1],y[1])(x[2],y[2]),...(x[n],y[n])围成一个没有边相交的多边形,则其围成的闭合多边形面积|S| 为:S=∑y[i] *(x[i+1]-x[i-1]), 其中i=1,2,...n,且当i与j除以n的余数相同的时候,x[i]=x[j],y[i]=y[j]。该公式用于凸凹多边形均可。
方法2:
int CImageViewView::GetRgnArea()
{
int area = 0;
int i,j;
CRect rect;
CPoint* m_points;
int m_nPoints;
CImageViewDoc* pDoc = GetDocument();
m_nPoints = pDoc->();
m_points = new CPoint[m_nPoints];
for(i = 0; i<m_nPoints ; i++) /
计算任意多边形面积的算法 来自淘豆网www.taodocs.com转载请标明出处.