java根据可用空间计算所需的列数和行数
我需要在给定的容器中分发“n”个数量的图像。它应该根据容器的纵横比是横向、纵向还是方形来优化空间。其目的是将图像渲染为尽可能大的大小,并且所有图像都具有相同的可用空间。为此,我计划创建一个网格,但我需要根据容器的纵横比知道它必须有多少列和多少行
我看了一下this question,但这并不完全是我需要的
这张n=8的图片应该会澄清一点:
如果容器是垂直的,则需要4行2列;如果容器是正方形,则需要3行3列;如果容器是水平的,则需要2行4列
我正在写一个函数,但我被夹在了中间:
private int[] calculateRowsAndColumnsNeeded(int numberOfImages, Dimension containerSize){
int numberOfColumns = 0;
int numberOfRows = 0;
int containerArea = containerSize.height * containerSize.width;
float singleCellArea = containerArea / numberOfImages;
double cellSideLength = Math.sqrt(singleCellArea);
// What to do with cellSideLength to get the right number of columns and rows?
return new int[]{numberOfColumns, numberOfRows};}
我真的很感谢你的帮助
提前谢谢
迭戈
# 1 楼答案
我找到了一个解决方案,它可能不是最好的算法,但它至少对我需要的1-20个元素有效。我没有进一步测试。如果我能找到办法,我以后会改进的
# 2 楼答案
下面是JavaScript中的一些内容。这对你有用吗