按2D属性排列块而不重叠

时间:2015-09-24 09:17:47

标签: algorithm constraint-programming

我的应用需要显示几个按钮,没有重叠,最好不要滚动或缩放。它们必须足够大才能用手指拨动并阅读文本。按钮宽度取决于其文本长度,高度是恒定的。屏幕尺寸已知。

每个按钮代表一种我知道一些营养信息的食物。我将计算蛋白质:碳水化合物比率和脂肪含量,范围从0%到100%。

我想将按钮靠近反映其营养成分的位置:例如顶部富含蛋白质,底部为carby,右侧为脂肪,左侧为瘦。所以蛋糕会在右下方,肉类会在最上面的某个地方。

通常,会有重叠,我必须将它们彼此推开。

难题是发明一种推动算法。按优先顺序排列的需求是:

1)可读且可戳的大小,没有重叠。 2)不需要滚动或缩放,虽然它会在有这么多按钮的情况下发生,即使我们不在乎它们在哪里,它们也永远不会适合屏幕。 3)根据了解食物的营养成分,按钮应该靠近用户看的位置。

顺便说一下,我在智能手机上使用JS,而不是prolog等。

(有一些看似愚蠢,但没有解决方案。一个是关于对角线杆,另一个只是提倡将它扔在游戏引擎上,但大多数都没有答案。)

1 个答案:

答案 0 :(得分:1)

Ther MArVL group at Monash University确实可用于基于约束的布局工作。他们的一些software可能适用于您的问题。