rt
在vc板块我只能给这么多
如果谁有,我可以在其他板块给分[email protected]

解决方案 »

  1.   

    很简单。
    int i, n;
    double d, s, x, y;
    s = 0;
    for(i=0;i<n-1;i++)
    {
        x = x[i+1]-x[i];
        y = y[i+1]-y[i];
        s += (x[i+1]-x[i])*(y[i+1]+y[i])*0.5;
        d += sqrt(x*x+y*y);
    }
    s = fabs(s);d为周长,s为面积。
      

  2.   

    n为闭合图形的顶点数,x[i],y[i]为顶点坐标,按顺序排列。
      

  3.   

    syy64(太平洋)给出的算法有没有考虑到凹多边形的情况?如果多变行的边有相交(线段)的情况呢?这个方法是不是正确的,能否验证一下?
    cutelocust (喝剩的茶叶) ,不规则图形是不是包括随手画出的一个封闭区域?
    一个不精确的算法:在封闭区域的最小外接矩形内取N个点,如果有n个点在封闭区域内,外接矩形的面积为S,封闭区域的面积为s,则,s = S*n/N ,N取的越多精度越高。
    也有其它的算法,如通过积分的思想也可以,扫描整个封闭图形,把所有的线叠加起来也就是图形的面积,这个方法需要判断封闭图形的边界。
      

  4.   

    to:chwk(学习ing):我的方法适合凹凸多边形,“如果多变行的边有相交(线段)的情况”,那就不叫多边形了。
      

  5.   

    如果有相交的线段,可以利用GIS中的拓扑功能生成闭合多边形,再求面积。
      

  6.   

    //计算任意面积
    double cal_pts_area(As_Pt * pts,int count)
    {
    As_Pt pt1,pt2,pt3,propt;
    double gao,di,s; pt1 = pts[0];
    s=0.;
    for(int i=1; i<count-1; i++)
    {
    pt2 = pts[i];
    pt3 = pts[i+1]; propt = proj_pt_to_line(pt1,pt2,normalise(pt2-pt3));

    di = (pt2-pt3).len();
    gao = (pt1-propt).len();
    //// 判断逆时针方向还是随时真方向 逆1  顺0
    if(api_mb_get_pts_dir(pt1,pt2,pt3))
    s +=  di*gao/2.0;
    else
    s -=  di*gao/2.0;
    }
    return fabs(s);
    }
      

  7.   

    to 楼上的
    不止一个图形,多个图形
    并且,图形是空心的谢谢,太平洋,还有  chwk(学习ing)等
      

  8.   

    我觉得 lettuceivy(lettuce)的方法也很好,二值化也不难作.图形个数越多越有优势,也不用考虑凹凸形。
    算法好理解,但是效率不够高