. . 大家好。
. . 我有一个由许多点(x,y)定义的画布——它不是矩形的,但至少它会遵循一些几乎六边形的形状(比如扭曲的六边形,角度总是 < 180 度)。我还有一大堆不同的矩形(或多或少 140 个,具有不同的宽度和高度),我需要将它们放置在形状内。它们必须像被重力推动一样定位(我的意思是......形状的顶部不需要填充,但底部需要)。. . 现在我唯一的想法是为每个“y”位置存储最小和最大“x”位置(例如:limits[300] = [30,30]; limits[299] = [29, 32]; .. .),遍历矩形,获取它们的面积,然后比较值以找到最佳位置。我现在最大的问题是它们需要以“有机”方式组织,而不是像表格(我不能有行和列并将它们放置在单元格内。它们需要尽可能好地定位就像流畅地,并排,一个在另一个之上......)。我不确定如何管理定位。. . 我知道一些“自动平衡”对象的好例子(一个很好的例子是“球池”Chrome 实验:http://mrdoob.com/projects/chromeexperiments/ball_pool/),但他们使用矩形画布和圆形对象,比较容易比较限制。. . 现在我最好的想法是检查每个可能的 x/y 组合的对象,从下到上,从左到右,检查是否有任何区域重叠,但这可能会锁定整个计算机几分钟的计算(屏幕上的项目越多,需要的计算就越多)。
. . 该项目在 Flash 上运行,但任何示例、提示、算法、论文或伪代码都会有很大帮助。