这个问题实际上涉及翻滚,我将在下面概括如下:
我有一个2D视图,我在屏幕上的一个区域内有许多矩形.我如何展开这些盒子,使它们不会相互重叠,但只能用最小的移动来调整它们?
矩形的位置是动态的,取决于用户的输入,因此它们的位置可以是任何位置.
附 图像显示问题和所需的解决方案
实际上,现实问题涉及翻车.
答案中的问题
矩形的大小不固定,并且取决于翻转中文本的长度
关于屏幕尺寸,现在我认为最好假设屏幕的大小足以容纳矩形.如果有太多的矩形并且算法没有解决方案,那么我只需要调整内容.
"最小化"的要求更多的是为了美学而非绝对的工程要求.人们可以通过在两个矩形之间添加一个很大的距离来分隔两个矩形,但它作为GUI的一部分看起来不太好.我们的想法是使翻转/矩形尽可能接近其源(我将用黑线连接到源).所以要么'只为x移动一个'或'移动两个x'都可以.