布局圆形 TreeMap 的算法是什么?

发布于 2024-10-29 17:17:28 字数 139 浏览 1 评论 0原文

给定一个标准的嵌套圆形树状图,如何做你计算出圆圈应该放在哪里吗?

Given a standard nested circular treemap, how do you calculate the where to place the circles?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

却一份温柔 2024-11-05 17:17:28

您的主要问题可以描述为:“给定一组不同半径的圆,如何将它们放置在一个更大的圆内,以便它们都不重叠”。

这是一个难题,但这里有一个蛮力解决方案可以帮助您入门:

  1. 按大小对圆进行排序
  2. 将最大的圆放在边界圆的内缘上
  3. 对于其余圆 (r1),请执行以下操作:
    1. 迭代所有已放置的圆对 (r2,r3)(包括外部圆)
    2. 查找到第一个圆的距离为 r1+r2 且到第二个圆的距离为 r1+r3 的(一个或两个)点。
    3. 尝试将新圆圈放置在此处。
    4. 迭代

上面使用的观察结果是,在完美的包装中,每个圆必须与至少两个其他圆接壤。您可以使用该算法提供完整搜索,也可以只是随机迭代并贪婪地选择第一个可用点。

Your main problem can be described as this: "Given a set of circles of varying radius, how does one place them within a larger circle, so that none of them overlap".

It's a hard problem, but here's a brute force solution to get you started:

  1. Sort the circles by size
  2. Place the largest circle on the inner rim of the bounding circle
  3. For the rest of the circles (r1), do the following:
    1. Iterate over all pairs of already placed circles (r2,r3) (including the outer one)
    2. Find the (one or two) points that have distance r1+r2 to the first circle and r1+r3 to the second circle.
    3. Try to place the new circle here.

The above uses the observation that in a perfect packing, every circle must border to at least two other circles. You can use the algorithm to provide a full search, or you can just iterate randomly and greedily choose the first available spot.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文