Sprite-Kit Swift中的强制定向绘图

时间:2018-03-21 04:16:22

标签: ios swift graph sprite-kit physics

我正在尝试使用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中实现强制定向绘图的一般步骤是什么?我想要非常精确答案的两个问题是:

  1. 是否有我可以使用的力量的原生对象/类?如果是这样,他们是什么?

  2. 我如何准确确定每种力量的大小?

  3. 我想要的结果几乎正是a Brown paper

0 个答案:

没有答案