MCPcopy Index your code
hub / github.com/marijnh/Eloquent-JavaScript / forceDirected_noVector

Function forceDirected_noVector

code/chapter/22_fast.js:124–144  ·  view source on GitHub ↗
(layout, graph)

Source from the content-addressed store, hash-verified

122}
123
124function forceDirected_noVector(layout, graph) {
125 for (let a = 0; a < graph.size; a++) {
126 let posA = layout[a];
127 for (let b = a + 1; b < graph.size; b++) {
128 let posB = layout[b];
129 let apartX = posB.x - posA.x
130 let apartY = posB.y - posA.y;
131 let distance = Math.sqrt(apartX * apartX +
132 apartY * apartY);
133 let connected = graph.neighbors(a).has(b);
134 if (distance > skipDistance && !connected) continue;
135 let size = forceSize(distance, connected);
136 let forceX = (apartX / distance) * size;
137 let forceY = (apartY / distance) * size;
138 posA.x += forceX;
139 posA.y += forceY;
140 posB.x -= forceX;
141 posB.y -= forceY;
142 }
143 }
144}

Callers

nothing calls this directly

Calls 3

forceSizeFunction · 0.85
neighborsMethod · 0.80
hasMethod · 0.45

Tested by

no test coverage detected