【发布时间】:2014-01-12 22:31:57
【问题描述】:
我正在制作一个图表,该图表在一个圆圈周围有许多项目。对于每个项目,我都有一个弧度,允许我将其放置在正确的位置 - 但我有重叠,我想将项目展开,但让它们保持靠近(尽可能靠近)它们的原始位置。
为避免重叠,每个项目必须与任何相邻项目至少成 7 度角。圆圈周围的所有项目总是有足够的空间 - 最多有 20 个项目,每个项目有可能有 18 度的分离(不会发生这种情况),但我很可能会在一个区域中最多有 6 或 8 个项目,并且可能有多个集群。
大多数情况下,我会有 10 到 12 个项目,但为了便于说明 - 假设我有 5 个相隔 1 度的项目:[1,2,3,4,5]。理想情况下,结果将是 [349,356,3,10,17] - 每个项目与任何其他项目成 7 度角,项目 3 保持不变,但所有项目都尽可能靠近它们的原始位置。
当然,当我拥有所有 20 件物品时 - 我冒着将一件物品移到另一件物品中的风险。举一个类似的例子:[340,1,2,3,4,5]。与上面相同 - 除了将 1 移动到 346 会导致另一个重叠。
鉴于项目弧度的完整列表,有谁知道完成我想要做的事情的方法?
我似乎无法弄清楚如何完成它。
【问题讨论】:
-
360度除以项目数?
-
均匀间隔很容易,并不代表我正在显示的数据。这些项目相对于它们所代表的数据进行定位。我需要它们保持在指定位置上或附近,但要分散开,以免重叠。
标签: javascript algorithm