找到填充区域的矩形大小

时间:2017-07-18 18:08:48

标签: c++ c algorithm

我遇到了麻烦需要你的帮助:

我正在制作一个以平铺模式显示n个视频的程序(又名,视频墙,c列和r行)。 n是任意的,视频大小相同(W x H),我们有W / H比例,墙的大小是固定的,我怎样才能得到c的最佳组合r更改时,WHn?最佳定义为:WH是最大值,视频会填充最大区域。

我看了一下装箱问题,但仍然无法解决我上面的问题,有人可以帮帮我吗?非常感谢你!

1 个答案:

答案 0 :(得分:1)

据我了解,您希望在给定nC=W/H

的墙上放置Width具有固定Height比率的矩形

设矩形高度为h(未知),宽度为w = C * h

网格的每一行都包含

 nr =  Floor(Width / (C * h))   // rounding down

每列都包含

nc = Floor(Height / h)

写不等式

n <= nc * nr
n <=  Floor(Width / (C * h)) * Floor(Height / h)

并解决它(找到最大可能h值)未知h

对于参数h的实际值,可能会找到初始近似值:

 h0 = Ceil(Sqrt(Width * Height / (n * C)))

并递减h值直到不等式变为真