R 半径 
和一个点 (x,y)怎么随机一个 圆内的坐标

解决方案 »

  1.   

    Random一个x 在 [-r,r]之间,然后求出 y的 最大值 和最小值 范围, 在从其中 随机获取 y
      

  2.   

    pointX : (x-R,x+R)
    pointY : (y-R,Y+R)新的点就是在这个范围内,,X 和 Y 随机不就行了
      

  3.   

    已知x点坐标 求圆上y点对应 坐标, 555 忘记公式了。
    风行下载安装 
    皮皮播放器下载
    uusee网络电视2010下载
      

  4.   

    设圆心坐标(x0,y0),半径r,则圆的方程:(x-x0)^2+(y-y0)^2=r^2^2表示平方 
    -----------------------------圆心 用(0,0) ,按这个  方程搞就可以了。
      

  5.   

    随机一个 [-r,r] 之间的x,再根据 x平方+y平方=r平方  算出 y 的区间。
      

  6.   

    不能要递归 或循环 检测要不一个while 一直随直到满足退出 这太费效率
      

  7.   

    //取第一个随机数
    x = Random.Next(0, r);//开方 取整数
    int t = Math.Floor( Math.Sqrt(r * r - x * x))//取第二个随机数
    y = Random.Next(0, t)x, y 随机加上正负号.x, y 根据加上圆心坐标,  取得最后值.
      

  8.   


    private static Random rad = new Random((int)(DateTime.Now.Ticks & 0xffffffffL) | (int)(DateTime.Now.Ticks >> 32));        /// <summary>
            /// 随机获得圆内一点
            /// </summary>
            /// <param name="center">圆心坐标</param>
            /// <param name="R">半径</param>
            /// <returns></returns>
            public static Point GetRandomInCirclePoint(Point center, int R)
            {
                int newX = rad.Next(center.X - R, center.X + R + 1);
                Thread.Sleep(200);
                int newY = rad.Next(center.Y - R, center.Y + R + 1);
                return new Point(newX, newY);
            }
     好像还行
      

  9.   

    555,这个 破论坛,不加http 还不行。5 r
      

  10.   

    额,,错了。。sorry这个是矩形,,
      

  11.   

    ?????????
    x=a+r*cosθ 
    y=b+r*sinθ 
    圆的参数方程,角度随机,半径在0-原始半径之间即可
      

  12.   


    private static Random rad = new Random((int)(DateTime.Now.Ticks & 0xffffffffL) | (int)(DateTime.Now.Ticks >> 32));        /// <summary>
            /// 随机获得圆内一点
            /// </summary>
            /// <param name="center">圆心坐标</param>
            /// <param name="R">半径</param>
            /// <returns></returns>
            public static Point GetRandomInCirclePoint(Point center, int R)
            {
                int newX = rad.Next(center.X - R, center.X + R + 1);
                Thread.Sleep(200);
                double maxY = Math.Sqrt((R * R) - newX * newX);
                int newY = rad.Next((int)-Math.Ceiling(maxY), (int)Math.Floor(maxY));
                return new Point(newX, newY);
            }第二个,,,有待改进
      

  13.   

    #21楼  
     int newY = rad.Next((int)-Math.Ceiling(maxY), (int)Math.Floor(maxY));
    这个波动范围太小 
     不能随机到在园内的任意一个点吧?
      

  14.   

    随机出2个RANDOM(-r,r)的随机数。
    一个与圆心X坐标相加,一个与圆心Y坐标相加。
    得到的坐标应该就是随机在圆内的坐标了。
      

  15.   


     private static Random rad = new Random((int)(DateTime.Now.Ticks & 0xffffffffL) | (int)(DateTime.Now.Ticks >> 32));
            /// <summary>
            /// 随机获得圆内一点
            /// </summary>
            /// <param name="center">圆心坐标</param>
            /// <param name="R">半径</param>
            /// <returns></returns>
            public static Point GetRandomInCirclePoint(Point center, int R)
            {
                int newX = rad.Next(center.X - R, center.X + R + 1);
                Thread.Sleep(200);
                double maxY = Math.Sqrt((R * R) - newX * newX);//圆上方的最大Y值
                double minY = center.Y - Math.Abs(maxY - center.Y);//关于 y=center.Y对称,找圆下方最小Y值,则在最小Y值和最大Y值之间取值。 
                int newY = rad.Next((int)Math.Floor(minY), (int)Math.Floor(maxY));
                return new Point(newX, newY);
            }
    看看这个吧,前面两个都错了,,悲剧,脑子糊了,未老先衰..