我有许多要放置在 2D 空间中的矩形元素。我计算每个元素的理想位置。现在我的问题是许多元素重叠,因为理想位置通常集中在一个区域。我想尽可能避免重叠(但不一定是完美的)。我怎样才能做到这一点?
我听说物理模拟适用于此 - 对吗?任何人都可以提供示例/教程吗?
顺便说一句:我正在使用 XNA,如果您知道任何可以完成这项工作的 .NET 库 - 告诉我!
可以使用物理引擎的一种方式:
在每个矩形上放置正电荷(或某种排斥力)并模拟力和运动。此外,正如 Eyal 所指出的那样,您还需要一些吸引力来防止它们飘走。这可以通过弹簧来建模(再次正如 Eyal 指出的那样)。他们有望最终达到某种可能涉及非重叠矩形的平衡。
我相信类似的想法(基于力的启发式方法)被用于确定漂亮的图形布局(节点和边之一)。
免责声明:我自己没有使用过这个。
希望有帮助!
Box2D 是一个广泛使用(免费)的物理库,可以完成所需的任务:链接