我想我所说的距离是指半径,所以另一种表述方式是“我如何在给定半径的圆的圆周上获得随机点,同时给定圆的中心点”。
我不明白降价。这是一个简单的 C# 问题,需要一个简单的 C# 答案,如下 Daniel DiPaolo 提供的那样。
降价和相关评论都无助于改进问题或提供答案。
我想我所说的距离是指半径,所以另一种表述方式是“我如何在给定半径的圆的圆周上获得随机点,同时给定圆的中心点”。
我不明白降价。这是一个简单的 C# 问题,需要一个简单的 C# 答案,如下 Daniel DiPaolo 提供的那样。
降价和相关评论都无助于改进问题或提供答案。
如果您的中心和半径是固定的,那么真正唯一变化的是角度。因此,只需计算 0 到 360 度(或 0 到 2π 弧度)之间的一些随机角度,然后使用极坐标转换来获取 xy 坐标。
x = r × cos( θ )
y = r x sin( θ )
将中心的 x,y 坐标添加为偏移量,您就有了坐标。
计算一个随机角度,然后使用角度和距离作为与第一个点的极坐标偏移。
看看Circle Point Tracking,这里有一些挑选点的方法。
算法代码
给定圆 {[0,0], 1} - {center, radius}
注意这可以通过使用角度更简单、更快、更均匀地完成,请参阅其他答案。
我的算法的问题是,如果有人尝试使用它,由于圆形的弯曲形状,靠近的点X=r+
被X=r-
拾取的频率比靠近的点要少X=0
。请参阅@Servy 的评论。