包装矩形算法
回答
您可以使用空间索引或四叉树细分2d平面。这个想法是将2d问题简化为1d问题。一旦获得了空间索引(或空间填充曲线),并且可以将2d离散化为1d,则可以使用1d来搜索相似度,或者按照从低到高的顺序进行排序,或者按照长度进行排序。如果你得到这个订单,你可以计算这个索引回到第二个代表,并以最有效的方式将它们打包在你的容器中。有很多方法可以创建空间索引。希尔伯特曲线是一些最好但很难做出的。另一个是z曲线或morton曲线。它与zizag曲线不同,因为它将平面细分为4个正方形(不是矩形)。
编辑:这里是一个链接,一个jQuery的插件:http://www.fbtools.com/jquery/treemap/ 这里有世界poplulation:http://www.fbtools.com/jquery/treemap/population.html
感谢您的链接。很有帮助。 – silviupop
假设您只有一个每个尺寸的矩形,您可以尝试复制纸张尺寸的排列。按大小排列矩形,从最大到最小,然后
- 取第一个矩形并将其放置在目标平面的拐角处。
- 拍摄下一张长方形(断言它比以前的长方形小)
- 旋转约90度
- 的地方,以便
- 它的尺寸较短的邻近最后的大国邻居的尺寸较长的
- 和其较长的一侧与目标平面的边缘相邻或相邻的边缘相同 尺寸
- 重复2 - 4
我认识的描述可能是不清楚,所以这里的画面呈现解决方案 - 它应有助于掌握它:
在每一步你把你的新的表面rectange by 4。
SUM(1/4用于n [0,INF)= 4/3 **
所以你能做的最好是适合你的矩形表面 4/3的矩形(高度×宽)
(这是一个下界)
@mloskot算法给出了一个可能的解决方案,这将是在表面的矩形3/2 *(高度*宽度):在这里,是示:
我看不出你怎么做得更好。
这听起来像一个rectangle packing problem。有一个链接到algorithm。该代码尽可能紧密地包装矩形。你说你想要矩形分布随机,我猜这意味着并不是所有矩形都是相邻的一个大小,所有的矩形都分布在大矩形中。也许上面链接的代码将是获得一些想法的好起点。
- 1. 圆形矩形的最大包装
- 2. 矩形近似算法
- 3. 在Java中的矩形包装
- 4. 算法 - 打矩形的检测旋转矩形内
- 5. 算法从坐标确定矩形
- 6. 最大矩形算法实现
- 7. 立方到等矩形投影算法
- 8. 最小矩形表面 - 算法
- 9. 二元二维矩形分区算法
- 10. 最佳矩形孵化算法
- 11. 矩形交集算法的Java实现..?
- 12. 简化的矩形包装算法。能够从更大的形状池中挑选。
- 13. 计算一个圆形包装?
- 14. 礼品包装算法
- 15. 3维bin包装算法
- 16. 包装时隙的算法
- 17. 在直线多边形中包装矩形
- 18. 正则多边形的高效包装算法
- 19. 用稀疏矩阵乘二次形式矩阵的算法
- 20. 算法问题:如何确定矩形是在另一个矩形内?
- 21. 将矩形均匀分布在另一个矩形内所需的算法
- 22. 从中心开始用较小的矩形填充大矩形的算法
- 23. 在矩形内计算六边形?
- 24. 拟合矩形中随机多边形的算法
- 25. 确定正方形和矩形之间关系的算法
- 26. 在多边形内拟合矩形的算法
- 27. 算法以适应矩形最少到不规则形状
- 28. 零高矩形包含点
- 29. 矩形包含问题
- 30. 需要算法来计算矩形的大小
作业...... – jmpcm
这是功课吗?如果这样做标记为家庭作业。 –
你需要提供更多细节。你是否有每一个矩形尺寸(例如单元边的1个,0.5个单元边的1个等等),或者你有多少个可以随意使用的矩形?另外,随机定义.. –