首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

根据参数个数获取多边形内的坐标

2012-05-20 
求助:根据参数个数获取多边形内的坐标已知一任意多边形的各点坐标现在需要根据参数返回多边形内点的坐标也

求助:根据参数个数获取多边形内的坐标
已知一任意多边形的各点坐标
现在需要根据参数返回多边形内点的坐标
也就是说
如果传入3,就要返回3个坐标点的坐标
求高手解答


[解决办法]

探讨
感觉好复杂,数学没学好。。。

[解决办法]
应该很好弄啊,你那应该是凸多边形吧,根据参数坐标获取最小的x坐标为x1和最大x坐标为x2,最小的y坐标为y1和最大的y坐标为y2

然后随机(x1~x2)范围的值作为x坐标,随机(y1~y2)范围的值作为y坐标,作为一个内点

C# code
   private void Form1_Load(object sender, EventArgs e)        {            Point[] pParam = new Point[] { new Point(12, 34), new Point(3, 5), new Point(45, 56), new Point(126, 6) };            Point[] pIn = GetPointInPolygon(2, pParam);                  }        /// <summary>        /// 获取多边形内随机坐标点        /// </summary>        /// <param name="count">获取左边点数量</param>        /// <param name="point">多边形的各个点</param>        /// <returns></returns>        public Point[] GetPointInPolygon(int count, Point[] point)        {            if (point.Length < 3)                return null; //不是多边形            int x1 = int.MaxValue;            int x2 = int.MinValue;            int y1 = int.MaxValue;            int y2 = int.MinValue;            foreach (Point p in point)            {                if (p.X < x1)                    x1 = p.X;                if (p.X > x2)                    x2 = p.X;                if (p.Y < y1)                    y1 = p.Y;                if (p.Y > y2)                    y2 = p.Y;            }            Random rnd = new Random((int)DateTime.Now.Ticks);            Point[] pointRet = new Point[count];            for (int i = 0; i < count; i++)            {                pointRet[i] = new Point(rnd.Next(x1, x2), rnd.Next(y1, y2));            }            return pointRet;        } 

热点排行