數學:知道n邊形各頂點座標,求面積

方法一:算法

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再取絕對值,由於求出來的面積值可能爲負(各頂點順時針排列的時候)
生成

相關文章
相關標籤/搜索