我在一本书中发现了这个问题,并且正在拼命解决它。问题本身是:创建最大高度的屋顶(非平面屋顶)。墙壁可以呈90度角或平行。算法:创建最大高度的屋顶
我的方法:
我所有的边缘点。所以我可以使用扫描线方法。我会把所有的观点都分在x轴和y轴上。然后,我将通过我的所有要点列表,并以45°的角度画出一条线。我将检查是否有任何一条线与我已绘制的当前线相交。如果没有匹配,我将进入下一个点,并在墙上画另一条45°的线。现在,最后2条线相交的机会很高,所以我会在交叉点处做一个新点。
我的问题是会有很多特殊情况。有没有更简单的方法,我没有想过?还有其他更适合这类问题的算法吗?你对这种问题有什么想法?
例如:
这是想象屋顶的样子。
有一些明显的约束你的问题失踪声明:常数圆周?瓦片面积?我不认为在你的房子中弯曲会改变任何东西 - 你在一边保存的东西正是你在另一边添加的东西,所以你可以保持房子“直线”。 (你可以看到这是真的,通过采取“下支”,分离它,并翻转它 - 现在将适合与另一件完全一致,并建立一个线性屋顶)。 – Floris
我不完全确定你的意思是“线性屋顶”,但我想创建的只是“斜屋顶”。我认为这不是我有多少区域。我想创造尽可能高的屋顶。 –
您的设计必须满足哪些限制条件。我想“给定尺寸(房子的覆盖面积),和屋顶的给定区域(>房子的面积)最大高度,否则您的解决方案的空间是无界如此。 - 你能澄清 – Floris