-2

我想我所说的距离是指半径,所以另一种表述方式是“我如何在给定半径的圆的圆周上获得随机点,同时给定圆的中心点”。

我不明白降价。这是一个简单的 C# 问题,需要一个简单的 C# 答案,如下 Daniel DiPaolo 提供的那样。

降价和相关评论都无助于改进问题或提供答案。

4

4 回答 4

8

如果您的中心和半径是固定的,那么真正唯一变化的是角度。因此,只需计算 0 到 360 度(或 0 到 2π 弧度)之间的一些随机角度,然后使用极坐标转换来获取 xy 坐标。

x = r × cos( θ )
y = r x sin( θ )

将中心的 x,y 坐标添加为偏移量,您就有了坐标。

于 2012-07-16T16:08:18.103 回答
7

计算一个随机角度,然后使用角度和距离作为与第一个点的极坐标偏移。

于 2012-07-16T16:05:45.453 回答
0

看看Circle Point Tracking,这里有一些挑选点的方法。

于 2012-07-16T16:07:29.043 回答
0

算法代码

给定圆 {[0,0], 1} - {center, radius}

  1. x => 从 [-1, 1] 中获取随机数 x
  2. y+y- => 随机选择正或负 y 四分之一(例如 0 或 1)
  3. y => 获取垂直线 x=X1(来自步骤 1)和圆的交点,选择正或负四分之一(来自步骤 2)

注意这可以通过使用角度更简单、更快、更均匀地完成,请参阅其他答案。

我的算法的问题是,如果有人尝试使用它,由于圆形的弯曲形状,靠近的点X=r+X=r-拾取的频率比靠近的点要少X=0。请参阅@Servy 的评论。

于 2012-07-16T16:11:46.053 回答