首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算与另一个圆的周长相吻合的圆数。

计算与另一个圆的周长相吻合的圆数。
EN

Stack Overflow用户
提问于 2019-05-06 11:29:41
回答 1查看 3.4K关注 0票数 2

我正在寻找一种算法(或伪码),它可以计算直径为"s“的(较小的)圆的最大数目,这些圆可以被压缩到半径为"r”的另一个(较大的)圆的圆周中。

图片:http://teasy.space/images/terracolony-squeezingcircles2.jpg

如果你愿意的话,你可以在半径/直径等之间交替--因为这是我仅有的两个参数(除了中心(大圆)坐标),也就是已知的两个参数。外圈可能不重叠,但可以合拍.

经过多年来对我日常生活的各种升级,我目前正在使用一种算法,这种算法不完美(需要精确,或者星系分解了lol),它在小的外圈直径和大的内圆圆周之间进行了广泛的插值,以比较精确的方式绘制圆圈数的多边形拟合模式,这会导致使用较大的外圈时出现的问题(即重叠)。

代码语言:javascript
复制
; 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的项目中使用了这个算法,它基于重力井,这是一个二维空间/重力实时殖民模拟游戏,包含卫星、行星、恒星、黑洞/白洞等。

图片:http://teasy.space/images/terracolony-squeezingcircles1.jpg

这是一个困扰这个项目十多年的问题!希望你能为我指明正确的方向。

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

谢谢!<3

特莱

我试图添加“周长”这个标签,但它显然需要"1500声誉“(我猜可能是为了防止垃圾邮件)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 15:28:11

建立了大圆半径( R )、小圆半径( r )与(接触)小圆个数( N )之间的关系式。

代码语言:javascript
复制
R = r / Sin(Pi/N)

因此,小圆圈的最大数目可以作为

代码语言:javascript
复制
Sin(Pi/N) = r / R
Pi / N = arcsin(r / R)
and finally
N = Pi / arcsin(r / R)

示例:

代码语言:javascript
复制
R=5
r=2.5 
 so 
N = Pi / arcsin(1/2) = 
    Pi / (Pi/6) = 
    6

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56004326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档