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