C#:如何在地图附近生成随机位置';GMap.NET中的s中心?

C#:如何在地图附近生成随机位置';GMap.NET中的s中心?,c#,geolocation,location,coordinates,gmap.net,C#,Geolocation,Location,Coordinates,Gmap.net,在我的表格中,有没有办法在地图中心附近的特定半径内生成随机位置? 我可以通过以下线条获得地图的中心: var center = gMapControl2.Position; 我做了一些研究,并偶然发现了这篇文章,但它是用Java编写的。假设中心是(x0,y0),我们正在寻找一个随机位置(x,y),该位置与中心的最大距离为maxDist。 我们知道 (x-x0)*(x-x0) + (y-y0)+(y-y0) <= maxDist *maxDist 在RMax和RMin之

在我的表格中,有没有办法在地图中心附近的特定半径内生成随机位置? 我可以通过以下线条获得地图的中心:

        var center = gMapControl2.Position;
我做了一些研究,并偶然发现了这篇文章,但它是用Java编写的。

假设中心是(x0,y0),我们正在寻找一个随机位置(x,y),该位置与中心的最大距离为maxDist。 我们知道

(x-x0)*(x-x0) + (y-y0)+(y-y0) <= maxDist *maxDist 

在RMax和RMin之间为R生成一个随机数。为0和360之间的θ生成不同的数字。现在使用基本三角学转换为(x,y)

这种方法对我来说似乎最直观,因为所述问题基本上是径向对称的。它还为您提供了(R,θ),用于您可能需要进行的任何其他计算

    int x = random.Next(-1* maxDist, maxDist);
    int maxY =(int) Math.Floor(Math.Sqrt(maxDist * maxDist - x * x));
    int y = random.Next(-1*maxY, maxY);
    y += y0;
    x += x0;