Skip to content

Commit d9819db

Browse files
committed
Optimized layout.
1 parent 9c1a19c commit d9819db

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

layouts/force-directed-layout.js

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,25 @@ Layout.ForceDirected = function(graph, options) {
8484
for(var i=0; i < nodes_length; i++) {
8585
var node_v = graph.nodes[i];
8686
node_v.layout = node_v.layout || {};
87-
node_v.layout.offset_x = 0;
88-
node_v.layout.offset_y = 0;
89-
if(this.layout === "3d") {
90-
node_v.layout.offset_z = 0;
87+
if(i==0) {
88+
node_v.layout.offset_x = 0;
89+
node_v.layout.offset_y = 0;
90+
if(this.layout === "3d") {
91+
node_v.layout.offset_z = 0;
92+
}
9193
}
94+
9295
node_v.layout.force = 0;
9396
node_v.layout.tmp_pos_x = node_v.layout.tmp_pos_x || node_v.position.x;
9497
node_v.layout.tmp_pos_y = node_v.layout.tmp_pos_y || node_v.position.y;
9598
if(this.layout === "3d") {
9699
node_v.layout.tmp_pos_z = node_v.layout.tmp_pos_z || node_v.position.z;
97100
}
98101

99-
for(var j=0; j < nodes_length; j++) {
102+
for(var j=i+1; j < nodes_length; j++) {
100103
var node_u = graph.nodes[j];
101-
if(node_v.id != node_u.id) {
104+
// if(node_v.id != node_u.id) {
105+
if(i != j) {
102106
node_u.layout = node_u.layout || {};
103107
node_u.layout.tmp_pos_x = node_u.layout.tmp_pos_x || node_u.position.x;
104108
node_u.layout.tmp_pos_y = node_u.layout.tmp_pos_y || node_u.position.y;
@@ -127,8 +131,20 @@ Layout.ForceDirected = function(graph, options) {
127131

128132
node_v.layout.offset_x += (delta_x / delta_length) * force;
129133
node_v.layout.offset_y += (delta_y / delta_length) * force;
134+
135+
if(i==0) {
136+
node_u.layout.offset_x = 0;
137+
node_u.layout.offset_y = 0;
138+
if(this.layout === "3d") {
139+
node_u.layout.offset_z = 0;
140+
}
141+
}
142+
node_u.layout.offset_x += -((delta_x / delta_length) * force);
143+
node_u.layout.offset_y += -((delta_y / delta_length) * force);
144+
130145
if(this.layout === "3d") {
131146
node_v.layout.offset_z += (delta_z / delta_length_z) * force_z;
147+
node_u.layout.offset_z += -((delta_z / delta_length_z) * force_z);
132148
}
133149
}
134150
}

0 commit comments

Comments
 (0)