Geometry 计算适合另一个圆圆周的圆数

Geometry 计算适合另一个圆圆周的圆数,geometry,collision,trigonometry,detection,Geometry,Collision,Trigonometry,Detection,我正在寻找一种算法或伪代码,可以计算出直径为s的小圆的最大数量,这些小圆可以被压缩到另一个半径为r的大圆的周长中 图片: 如果您愿意,您可以在半径/直径等之间交替-因为这是除我拥有的中心大圆坐标之外的唯一两个参数,即已知的参数。。。 外圆可能不会重叠,但可以紧贴在一起 经过多年来对我的日常工作的各种升级,我目前使用的算法并不完美,需要精确,否则银河系就会崩溃 它在较小的外圆直径和较大的内圆周长之间进行广泛的插值,以在某种程度上精确地绘制多边形样式拟合图案中的圆数,这会导致问题,即使用较大的外圆时

我正在寻找一种算法或伪代码,可以计算出直径为s的小圆的最大数量,这些小圆可以被压缩到另一个半径为r的大圆的周长中

图片:

如果您愿意,您可以在半径/直径等之间交替-因为这是除我拥有的中心大圆坐标之外的唯一两个参数,即已知的参数。。。 外圆可能不会重叠,但可以紧贴在一起

经过多年来对我的日常工作的各种升级,我目前使用的算法并不完美,需要精确,否则银河系就会崩溃 它在较小的外圆直径和较大的内圆周长之间进行广泛的插值,以在某种程度上精确地绘制多边形样式拟合图案中的圆数,这会导致问题,即使用较大的外圆时重叠

; try to fit a random number of circles
num_Circles = Rand( min,max )
; check if the number of circles exceed the maximum that can fit
If num_Circles * SmallCircle_Diameter > LargeCircle_Circumference
    ; adjust the amount accordingly
    num_Circles = LargeCircle_Circumference / SmallCircle_Diameter
End If
另一个假设是较小的外圆的大小永远不会超过较大的内圆的大小。。。 少一点担心

我在我的一个叫做Terra Colony的项目中使用了这个算法,这个项目基于重力井,一个二维空间/重力实时殖民模拟游戏,有卫星、行星、恒星、黑洞/黑洞等

图片:

这是一个困扰这个项目十多年的问题! 希望你能给我指出正确的方向:D

我以前做过很多实验,编写了不同的程序来寻找解决方案,我在互联网上到处寻找公式和解决方案,这些公式和解决方案最终非常接近,但还不够接近!:P


谢谢大家! 有一个公式建立了大圆半径R、小圆半径R和接触小圆数N之间的关系

因此,小圆圈的最大数量可能为

Sin(Pi/N) = r / R
Pi / N = arcsin(r / R)
and finally
N = Pi / arcsin(r / R)
例如:

R=5
r=2.5 
 so 
N = Pi / arcsin(1/2) = 
    Pi / (Pi/6) = 
    6

哇!非常感谢您的快速回复。。。让我试试看!
R=5
r=2.5 
 so 
N = Pi / arcsin(1/2) = 
    Pi / (Pi/6) = 
    6