我正在制作一个用户玩家在屏幕上放置圆圈的游戏.重要的是圆圈永远不会重叠,所以我需要从光标中找出最近的可能自由点.我找到了圆形打包算法,但它们似乎不适合我的问题.我也在过去为盒子(这里)解决了类似的问题,但是用圆圈,我似乎无法弄明白.
我想出了当它与一个圆相交时,或者甚至当涉及两个时,我如何找到最近的自由位置.但是,我找不到一个可以处理任何排列中具有任意数量圆圈的复杂情况的稳健算法.
问题的精确描述:我有一个2D空间,任意数量的非交叉圆,都具有相同的半径(虽然这可能无关紧要).我想找到下一个圆的位置,使其不与任何其他圆相交,并且哪个中心[x,y]最接近指定位置[x,y].
任何类型的建议(参考,方法或(Java)库).
ps如果解决方案包括确保圆圈保持在特定的边界框内(即显示),则奖励积分.
我的最终解决方案:(根据David Wallace的建议)
请注意,这不能很好地完成,但在我的情况下,用户正在拖动屏幕上的新圆圈就足够了.它适用于大多数情况下,有些情况下没有,通常当有很多圆圈非常接近时,新圆圈只停留在最后一个位置(这是有效的).然后,用户可以决定进一步拖动它,并且在他想要新圆圈的位置更精确.
一个带有两个嵌套<svg>元素的简单实验显示:
<svg>元素已background应用样式属性<svg>元素不具备的background样式属性应用另一个实验transform向两个都添加了一个属性,<svg>表明该属性也被内部忽略<svg>。
内部<svg>元素忽略background样式和属性的任何原因transform?通常,是否有文档说明哪些属性适用于嵌套<svg>元素,以及不适用于嵌套元素?