FDA算法,Force Directed Algorithm,一种点线图的布局算法,找了半天没有有关描述,只有根据原始英文文档的理解写一下。
定义:
area=W*L WL为画布的宽度和长度
V 点集 E 边集
k = sqrt(area/|V|)
fa(z) = z*z/k
fr(z) = k*k/z
k为点密度的开根号。
fa计算了相关的点点距离平方除以k,该算式用来计算引力,距离越大,引力越恐怖,同时,点越多越容易被吸引到有连线的点周围。
fr计算不相关的点斥力,点密度除以点距离,距离越远斥力越小,点越多被推开的距离越近。连线对点的影响更大,相关的点计算引力时使用了距离的平方,而不相关的在计算斥力时计算的结果总是相对较小的。
对每个点v
对每个不和v相连的点u做如下运算:
e = v.pos-u.pos
v.disp = v.disp+(e/|e|)*fr(|e|)
每个点包含了两个向量 pos 位置向量