我可以使用哪种算法或软件来计算图块位置?

时间:2019-07-19 17:14:14

标签: algorithm optimization tile

我的父亲目前正在他的新房子里工作,他现在可以上地砖了。他问我所谓的“计算机科学”问题,但我想它更多是数学和算法学。

问题如下:让我们想象一个给定的工作空间(例如10x5米)和不同大小的图块:

  • 50cm x 50cm
  • 30cm x 50cm
  • 30cm x 50cm

围绕这3种类型的瓷砖构建了一种建议的图案,这些瓷砖形成了一种“ L”形,我想在美学上尽可能地重复这种图案。

我的问题是:如何优化贴砖的位置以适合最大数量的完整贴砖,而又不会在边缘切割太多?是否存在针对此类问题的软件或给定的数据结构?

我没有给定的语言(即使欢迎使用Python),但我的目标是能够绘制放置所有瓷砖的房间,以适应未切割瓷砖的最大数量!希望我说清楚

很抱歉,如果重复,但我似乎找不到合适的关键字

1 个答案:

答案 0 :(得分:1)

我们无法为您提供严格的解决方案,因为您尚未完全指定问题所在。您尚未在保持所需的“ L”形和切割瓷砖之间进行权衡评估。您还没有指定“ L”;有几种可能性。例如:

 +-----+
 | 3x5 |
 |     +---+
 |         |
 | 5x5  5x3|
 +---------+

 +---+
 |5x3|
 |   +-----+
 |         |
 | 5x5  5x3|
 +---------+

我建议您查找tesselations的字段;最全面的参考文献(IMHO)来自Darrah Chavey

最简单的开始就是简单地将“ l”形状“勺”成其自然对角线:

       +-----+  ... and upward to the wall
       |     |
       |     +---+
 +-----+         |
 | 3x5 |         |
 |     +---+-----+
 |         |
 | 5x5  5x3|
 +---------+

另一个是,您可以形成两个“ L”形,旋转一个半圈,然后将它们连接成具有两个凹角的六边形。此六角形将类似地平铺平面:

   +---------+
   |         |
   |         |
 +-+---+     |
 | 3x5 |     |
 |     +---+-+
 |         |
 | 5x5  5x3|
 +---------+

对于这么大的空间,您可能需要选择一种重复的模式,该模式对于您的特定空间尺寸非常适用,然后选择

  1. 从一个角落开始,在整个房间中传播,按照您认为合适的方式处理相对的边缘;
  2. 从中间开始,稍微调整一下即可很好地击打墙壁,但更均匀地处理边缘;
  3. 与边缘对齐并朝中间方向移动,切割几块瓷砖以产生差异化的中心特征。