这是我的绘图:CLICK
我需要编写一个程序,它会找到正方形的数量(1x1),我们可以绘制成一个给定半径的圆。正方形只能完全绘制并放置像乐高积木 - 一个在另一个上。在某些情况下,正方形的顶点可以位于圆上。
示例:对于1-,它为0,对于2-,它给出4,对于3- 16个正方形,对于4-32,对于5-52。
我写了一些东西,但是对于5+(我的意思是半径大于5)它不能正常工作。在这里:CLICK。在我的代码中 - r是圆的半径,sum是所有正方形的总和,而height是我尝试“绘制”到圆圈中的三角形的高度(使用毕达哥拉斯定理)。
现在 - 任何帮助?我的算法是否正确?我应该改变什么吗?
答案 0 :(得分:2)
有Gauss's Circle Problem给出一个公式来计算给定半径圆内的整数点。您可以使用此逻辑来计算圆圈中的方块。
N = 4 * Sum[i=1..R] (Floor(Sqrt((R^2-i^2)))
示例:
R = 3
i=1 n1 = Floor(Sqrt(9-1))~Floor(2.8)=2
i=2 n2 = Floor(Sqrt(9-4))~Floor(2.2)=2
i=3 n2 = Floor(Sqrt(9-9))=0
N=4*(n1+n2+n3)=16
答案 1 :(得分:0)
第一个偏离半径为5的圆形适合60个1x1正方形,而不是52个。我的赌注是有人没有计算点{[3,4],[3, -4],[4,3],[4,-3],[ - 4,3],[ - 4,-3],[ - 3,4],[ - 3,-4]}在纸上并用手计数,不确定它们是在圆圈上还是在圆圈外面。他们正好在圈子里。
第二次 - MBo的回答让我来到这里 - 我有时会搜索StackOverflow的高斯圆问题,看看是否有人建议了一些新的有趣算法。
第三次 - 这里是代码:
npm
它的作用是计算圆的八分之一内的正方形,在一个内切正方形之外。很抱歉我的行家格式和过于冗长的变量名称。