有大神给编个代码吗 求实现 有注释最好 谢谢了!
要求画任意多边形 然后输入A B 出来后面结果C#gis缓冲区角平分线算法

解决方案 »

  1.   

     我第一次做gis……你说的我也理解不了额~
      

  2.   

    不懂你这个和GIS有什么关系,当然也不是简单的坐标放大缩小,是图形多边形的放大缩小没错,要找中心,图形算法中是有的。
      

  3.   

    1楼说的就是各个坐标点跟中心点用三角函数计算放大缩小比例,给你一个求中心点坐标的函数       /// <summary>
            /// 获取中心点坐标
            /// </summary>
            /// <param name="p"></param>
            /// <returns></returns>
            public Point GetCenterPoint(Point[] p)
            {            Point ptCenter = new Point(0, 0);
                int i, j;
                double ai, atmp = 0, xtmp = 0, ytmp = 0;
                if (p == null)
                    throw new ArgumentNullException("获取多边形中心点坐标时传入的参数为空。");
                if(p.Length == 1)
                    return p[0];
                if ((p.Length == 2) || (p.Length == 3 && p[0] == p[2]))
                    return new PointDD((p[1].X + p[0].X) / 2, (p[1].Y + p[0].Y) / 2);            int n = p.Length;
                for (i = n - 1, j = 0; j < n; i = j, j++)
                {
                    ai = p[i].X * p[j].Y - p[j].X * p[i].Y;
                    atmp += ai;
                    xtmp += (p[j].X + p[i].X) * ai;
                    ytmp += (p[j].Y + p[i].Y) * ai;
                }            if (atmp != 0)
                {
                    ptCenter.X = Convert.ToInt32(xtmp / (3 * atmp));
                    ptCenter.Y = Convert.ToInt32(ytmp / (3 * atmp));            }
                return ptCenter;        }然后以中心点为坐标原点,其他各点与中心点根据三角函数求比例就不用我写了吧
      

  4.   

    上面的PointDD都改成Point,
    这是我以前求gis里大地中心坐标的,PointDD当时定义的大地坐标点,上面没全改过来,你都改成Point就可以了