我需要计算最有效的方块大小才会填满屏幕,
如果你看下面的图像,有不同的屏幕尺寸和平方数。 我需要一个算法来计算 x轴平方计数和y轴平方计数,这将最有效地填充屏幕(填充正方形后将留下最小空白区域)。
我看了下面的帖子,但这不是解决我问题的答案
1 - 可以更改平方计数(3-5-10等等......)
2 - 屏幕尺寸可能不同
例如,
1280 x 800 15 square?
800 x 480,12平方?
600x1024,9平方?
在720x1280上有45平方?
**我需要一个计算方块宽度的算法(高度与宽度相同)**
如果您查看图像3和图像3-1之间的差异,您会看到图像3-1使用的屏幕更有效,因为未使用的区域较少。
图片3
或许这是一种更好的填充方式:
图片3-1
如果您查看图像4和图像4-1之间的差异,您会看到图像4-1使用的屏幕更有效,因为未使用的区域较少。
图片4
** 4.图像必须如下所示,因为屏幕上的未使用区域较少**
图片4-1
答案 0 :(得分:1)
我相信你所说的“有效”是广场覆盖的区域越大越好。
让:
a:x轴平方计数
b:y轴平方计数
s:正方形的大小(一边的长度)
w:屏幕宽度
h:屏幕高度
c:要放的方格数
然后我们
a * s <= w
b * s <= h
a * b >= c
利用这些不等式,可以找到s的上界。 检查给出的第四个例子,其中c = 20,w = 1280和h = 800
a * s <= 1280
b * s <= 800
a * b >= 20
a * b =(1280 / s)*(800 / s)> = 20 ---&gt; s ^ 2&lt; =(1280 * 800)/ 20 ---&gt; s&lt; = 226,27 ..
对于s的上限,我们可以估计a和b为;
a * s&lt; = 1280 ---&gt; a~ = 5,6568 b * s&lt; = 800 ---&gt; b~ = 3,53
使用这些值,不等式a * b&gt; = 20不成立。
但是a和b都必须是整数。然后我们尝试a和b可以获得的4种可能性:
a = 5, b = 3 // round down both
a = 5, b = 4 // one down, one up
a = 6, b = 3 // one down, one up
a = 6, b = 4 // round up both
由于a * b> = 20,第一和第三种情况被消除为有效答案。 选择a = 5,b = 4的答案作为下一步,因为他们的产品更接近于所需的平方数。
答案 1 :(得分:0)
您正在寻找的是显示器宽度和高度之间的greatest common factor。
由于大多数显示器的比例为4:3或16:9,因此最大的公共因子将为您提供可用于填充显示区域的最大正方形。
在400 x 400像素的显示屏中,最大公因子为400,并且一个方格将填满显示屏。
在1280 X 800像素显示屏中,最常见的因素是160.您需要40个方格(8 x 5)来填充显示。
如果要为所有显示尺寸计算一个最大公因子,答案是1.每个像素都是一个正方形。您应该为要支持的每个显示大小计算一个单独的最大公因子。