有没有办法在我的表单中特定半径范围内的地图中心附近生成随机位置? 我可以使用以下行获取地图的中心:
var center = gMapControl2.Position;
我做了一些研究并且发现了this帖子,但它是用Java编写的。
答案 0 :(得分:2)
在RMax和RMin之间生成R的随机数。为0和360之间的theta生成不同的数字。现在使用基本的三角学转换为(x,y)。
这种方法对我来说似乎最直观,因为所述的问题基本上是径向对称的。它还为您(R,Theta)提供了您可能想要进行的任何其他计算。
答案 1 :(得分:1)
假设中心是(x0,y0),我们正在寻找一个随机位置(x,y),距离中心的最大距离为maxDist。 我们知道
(x-x0)*(x-x0) + (y-y0)+(y-y0) <= maxDist *maxDist
首先,我们在适当的距离找到x的随机值,然后找到y的随机值:
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;