我正在尝试使用Sprite-Kit在Swift 4中实现强制定向绘图。我想使用Sprite-Kit,因为我认为内置的物理世界会削减很多工作。
据我了解from Wikipedia,利用弹簧力(胡克定律)和电力(库仑定律)得到力导向图。根据{{3}},
要嵌入图形,我们用钢环代替顶点,用弹簧替换每个边缘,形成机械系统。顶点放置在一些初始布局中并放开,以便环上的弹簧力将系统移动到最小能量状态。对这个想法进行了两次实际调整:首先,使用对数强度弹簧;也就是说,弹簧施加的力是:
c 1 * log(d / c 2 ),
其中d是弹簧的长度,c 1 和c 2 是常数。经验表明,当顶点相距很远时,Hookes Law(线性)弹簧太强;对数力解决了这个问题。请注意,当d = c 2 时,弹簧不会施加力。其次,我们使非相邻顶点相互排斥。逆平方法力,
C <子> 3 子> / d <子> 2 子>,
其中c 3 是常数,d是顶点之间的距离,是合适的......值c 1 = 2,c 2 = 1,c 3 = 1,c 4 = 0.1,适用于大多数图形。
我一直在试图弄清楚如何实现这一点,并且我找到的所有实现和教程都是使用不同的语言(主要是JS),或者 - 即使它们在Swift中 - 不要使用Sprite-Kit。我不是在寻找一个硬实现,而是寻求实际实现这一点的建议和一般步骤。
此外,我在不同的节点之间有不同的权重,我认为这将表现为胡克定律(一个更紧的春天)更强的常数。
使用Sprite-Kit在Swift中实现强制定向绘图的一般步骤是什么?我想要非常精确答案的两个问题是:
是否有我可以使用的力量的原生对象/类?如果是这样,他们是什么?
我如何准确确定每种力量的大小?
我想要的结果几乎正是a Brown paper。