1、计算任意多边形面积的算法方法 1:用这个方法吧:我们都知道已知 A(x1,y1 )B(x2,y2)C( x3,y3)三点的面积公式为|x1 x2 x3|S(A,B,C) = |y1 y2 y3| * 0.5 (当三点为逆时针时为正,顺时针则为负的 )|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)就可以了。还有一个方法:任意一个简单多边形,当它的各个顶点位
2、于网格的结点上时,它的面积数 S=b/2+c+1其中:b 代表该多边形边界上的网络结点数目c 代表该多边形内的网络结点数目所以把整个图形以象素为单位可以把整个图形分成若干个部分,计算该图形边界上的点 b 和内部的点 c 就得到面积数 S 了,然后把 S 乘以一个象素的面积就是所求的面积了。多边形面积的计算公式如下:设有 n 个点(x1,y1)(x2,y2),.(xn,yn)围成一个没有边相交的多边形,则其围成的闭合多边形面积|S| 为:S=yi *(xi+1-xi-1), 其中 i=1,2,.n,且当 i 与 j 除以 n 的余数相同的时候,xi=xj ,yi=yj 。该公式用于凸凹多边形均可
3、。方法 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_aryRectPoint.GetSize();m_points = new CPointm_nPoints;for(i = 0; im_aryRectPointi-m_ptPoint;CRgn rgn;rgn.CreatePolygonRgn(m_points, m_nPoints, ALTERNATE);rgn.GetRgnBox( /获得一个包括该多边形的矩形CPoint point; /计算矩形内的点落在多边形内的数量for( i = rect.top ; irect.bottom;i+)for( j = rect.left; jrect.right ; j+)point.x = j; point.y = i;if(rgn.PtInRegion(point)area +;delete m_points;return area;