diff --git a/examples/d3-force-neighbourSampling-papaparsing.html b/examples/d3-force-neighbourSampling-papaparsing.html
index 817ec66..1549a70 100644
--- a/examples/d3-force-neighbourSampling-papaparsing.html
+++ b/examples/d3-force-neighbourSampling-papaparsing.html
@@ -209,8 +209,8 @@
- Link
- force in D3
+ Link force in D3
+ Link force (tweaked)
Barnes-Hut
t-SNE
diff --git a/examples/js/src/neighbourSampling-papaparsing.js b/examples/js/src/neighbourSampling-papaparsing.js
index 5af706c..13fa8bd 100644
--- a/examples/js/src/neighbourSampling-papaparsing.js
+++ b/examples/js/src/neighbourSampling-papaparsing.js
@@ -42,7 +42,8 @@ var nodes, // as in Data points
selectedData,
clickedIndex = -1,
paused = false,
- alreadyRanIterations;
+ alreadyRanIterations,
+ tweakedVerOfLink;
// Default parameters
var MULTIPLIER = 50,
diff --git a/examples/js/src/neighbourSampling-papaparsing/linkForce.js b/examples/js/src/neighbourSampling-papaparsing/linkForce.js
index b60bb57..54c54c0 100644
--- a/examples/js/src/neighbourSampling-papaparsing/linkForce.js
+++ b/examples/js/src/neighbourSampling-papaparsing/linkForce.js
@@ -32,14 +32,15 @@ function startLinkSimulation() {
* The full pre-calculation will then occur once when the force is being
* initialized by the simulation.
*/
- simulation.force(forceName,
- d3.forceLinkOptimized()
- .distance(function (n) {
+ let force = tweakedVerOfLink ? d3.forceLinkTweaked() : d3.forceLink();
+ force.distance(function (n) {
return distanceFunction(n.source, n.target, props, norm);
- })
- .links(links)
- ).alphaDecay(0)
- //.velocityDecay(0.8)
- .alpha(1)
- .restart();
+ })
+ .links(links);
+
+ simulation.force(forceName,force)
+ .alphaDecay(0)
+ //.velocityDecay(0.8)
+ .alpha(1)
+ .restart();
}
diff --git a/index.js b/index.js
index 03fe85c..83f6f66 100644
--- a/index.js
+++ b/index.js
@@ -13,7 +13,7 @@ export { default as forceBarnesHut}
export { default as tSNE}
from "./src/t-sne";
-export { default as forceLinkOptimized}
+export { default as forceLinkTweaked}
from "./src/link";
export { default as hybridSimulation}
diff --git a/src/link.js b/src/link.js
index 7be7219..4fcd5ad 100644
--- a/src/link.js
+++ b/src/link.js
@@ -4,10 +4,12 @@ import jiggle from "./jiggle";
/**
* Modified link force algorithm
* - ignore alpha
- * - removed location prediction, and bias
+ * - removed bias
* - modified strength calculation
* - removed other unused functions
* Making it more suitable for the spring model.
+ * This should initialize and perform calculation a bit faster, and also
+ * use a bit less memory
*/
export default function(links) {
@@ -26,8 +28,8 @@ export default function(links) {
// jiggle so it wont divide / multiply by zero after this
source = link.source;
target = link.target;
- x = target.x - source.x || jiggle();
- y = target.y - source.y || jiggle();
+ x = target.x + target.vx - source.x - source.vx || jiggle();
+ y = target.y + target.vy - source.y - source.vy || jiggle();
l = Math.sqrt(x * x + y * y);
l = (l - distances[i]) / l * dataSizeFactor;
x *= l, y *= l;
@@ -41,13 +43,11 @@ export default function(links) {
function initialize() {
if (!nodes) return;
- console.log("CUSTOM LINK FORCE");
dataSizeFactor = 0.5/(nodes.length-1);
initializeDistance();
}
function initializeDistance() {
- console.log("INIT DISTANCE", links.length);
if (!nodes) return;
for (var i = 0, n = links.length; i < n; ++i) {