@antv/layout 1.2.10 → 1.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/747bfdc8efc94bc1fa90.worker.js +2 -0
- package/dist/747bfdc8efc94bc1fa90.worker.js.map +1 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/lib/bundle-entry.js +19 -0
- package/lib/bundle-entry.js.map +1 -0
- package/lib/bundle-supervisor.js +94 -0
- package/lib/bundle-supervisor.js.map +1 -0
- package/lib/bundle-worker.js +52 -0
- package/lib/bundle-worker.js.map +1 -0
- package/lib/circular.js +258 -0
- package/lib/circular.js.map +1 -0
- package/lib/comboCombined.js +440 -0
- package/lib/comboCombined.js.map +1 -0
- package/lib/concentric.js +229 -0
- package/lib/concentric.js.map +1 -0
- package/lib/d3Force/forceInBox.js +331 -0
- package/lib/d3Force/forceInBox.js.map +1 -0
- package/lib/d3Force/index.js +338 -0
- package/lib/d3Force/index.js.map +1 -0
- package/lib/dagre/acyclic.js +62 -0
- package/lib/dagre/acyclic.js.map +1 -0
- package/lib/dagre/add-border-segments.js +37 -0
- package/lib/dagre/add-border-segments.js.map +1 -0
- package/lib/dagre/coordinate-system.js +65 -0
- package/lib/dagre/coordinate-system.js.map +1 -0
- package/lib/dagre/data/list.d.ts +1 -1
- package/lib/dagre/data/list.js +50 -0
- package/lib/dagre/data/list.js.map +1 -0
- package/lib/dagre/greedy-fas.js +147 -0
- package/lib/dagre/greedy-fas.js.map +1 -0
- package/lib/dagre/layout.js +470 -0
- package/lib/dagre/layout.js.map +1 -0
- package/lib/dagre/nesting-graph.js +153 -0
- package/lib/dagre/nesting-graph.js.map +1 -0
- package/lib/dagre/normalize.js +98 -0
- package/lib/dagre/normalize.js.map +1 -0
- package/lib/dagre/order/add-subgraph-constraints.js +45 -0
- package/lib/dagre/order/add-subgraph-constraints.js.map +1 -0
- package/lib/dagre/order/barycenter.js +23 -0
- package/lib/dagre/order/barycenter.js.map +1 -0
- package/lib/dagre/order/build-layer-graph.js +96 -0
- package/lib/dagre/order/build-layer-graph.js.map +1 -0
- package/lib/dagre/order/cross-count.js +63 -0
- package/lib/dagre/order/cross-count.js.map +1 -0
- package/lib/dagre/order/index.js +91 -0
- package/lib/dagre/order/index.js.map +1 -0
- package/lib/dagre/order/init-data-order.js +28 -0
- package/lib/dagre/order/init-data-order.js.map +1 -0
- package/lib/dagre/order/init-order.js +50 -0
- package/lib/dagre/order/init-order.js.map +1 -0
- package/lib/dagre/order/resolve-conflicts.d.ts +1 -1
- package/lib/dagre/order/resolve-conflicts.js +121 -0
- package/lib/dagre/order/resolve-conflicts.js.map +1 -0
- package/lib/dagre/order/sort-subgraph.js +84 -0
- package/lib/dagre/order/sort-subgraph.js.map +1 -0
- package/lib/dagre/order/sort.js +74 -0
- package/lib/dagre/order/sort.js.map +1 -0
- package/lib/dagre/parent-dummy-chains.js +80 -0
- package/lib/dagre/parent-dummy-chains.js.map +1 -0
- package/lib/dagre/position/bk.d.ts +1 -1
- package/lib/dagre/position/bk.js +398 -0
- package/lib/dagre/position/bk.js.map +1 -0
- package/lib/dagre/position/index.js +54 -0
- package/lib/dagre/position/index.js.map +1 -0
- package/lib/dagre/rank/feasible-tree.js +164 -0
- package/lib/dagre/rank/feasible-tree.js.map +1 -0
- package/lib/dagre/rank/index.js +48 -0
- package/lib/dagre/rank/index.js.map +1 -0
- package/lib/dagre/rank/network-simplex.js +232 -0
- package/lib/dagre/rank/network-simplex.js.map +1 -0
- package/lib/dagre/rank/util.js +138 -0
- package/lib/dagre/rank/util.js.map +1 -0
- package/lib/dagre/util.js +289 -0
- package/lib/dagre/util.js.map +1 -0
- package/lib/dagre.js +545 -0
- package/lib/dagre.js.map +1 -0
- package/lib/force/forceNBody.js +123 -0
- package/lib/force/forceNBody.js.map +1 -0
- package/lib/force/index.js +805 -0
- package/lib/force/index.js.map +1 -0
- package/lib/force/types.d.ts +3 -3
- package/lib/force/types.js +2 -0
- package/lib/force/types.js.map +1 -0
- package/lib/forceAtlas2/body.d.ts +1 -1
- package/lib/forceAtlas2/body.js +91 -0
- package/lib/forceAtlas2/body.js.map +1 -0
- package/lib/forceAtlas2/index.js +562 -0
- package/lib/forceAtlas2/index.js.map +1 -0
- package/lib/forceAtlas2/quad.d.ts +1 -1
- package/lib/forceAtlas2/quad.js +98 -0
- package/lib/forceAtlas2/quad.js.map +1 -0
- package/lib/forceAtlas2/quadTree.js +105 -0
- package/lib/forceAtlas2/quadTree.js.map +1 -0
- package/lib/fruchterman.js +376 -0
- package/lib/fruchterman.js.map +1 -0
- package/lib/grid.js +308 -0
- package/lib/grid.js.map +1 -0
- package/lib/index.js +17 -0
- package/lib/index.js.map +1 -0
- package/lib/mds.js +137 -0
- package/lib/mds.js.map +1 -0
- package/lib/radial/index.js +355 -0
- package/lib/radial/index.js.map +1 -0
- package/lib/radial/mds.js +29 -0
- package/lib/radial/mds.js.map +1 -0
- package/lib/radial/radial-nonoverlap-force.d.ts +1 -1
- package/lib/radial/radial-nonoverlap-force.js +100 -0
- package/lib/radial/radial-nonoverlap-force.js.map +1 -0
- package/lib/random.js +98 -0
- package/lib/random.js.map +1 -0
- package/lib/registry.js +27 -0
- package/lib/registry.js.map +1 -0
- package/lib/supervisor.js +90 -0
- package/lib/supervisor.js.map +1 -0
- package/lib/types.d.ts +13 -13
- package/lib/types.js +4 -0
- package/lib/types.js.map +1 -0
- package/lib/util/array.js +2 -0
- package/lib/util/array.js.map +1 -0
- package/lib/util/common.d.ts +12 -0
- package/lib/util/common.js +32 -0
- package/lib/util/common.js.map +1 -0
- package/lib/util/function.js +126 -0
- package/lib/util/function.js.map +1 -0
- package/lib/util/gpu.js +214 -0
- package/lib/util/gpu.js.map +1 -0
- package/lib/util/index.js +7 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/math.js +257 -0
- package/lib/util/math.js.map +1 -0
- package/lib/util/number.js +5 -0
- package/lib/util/number.js.map +1 -0
- package/lib/util/object.js +42 -0
- package/lib/util/object.js.map +1 -0
- package/lib/util/string.js +15 -0
- package/lib/util/string.js.map +1 -0
- package/lib/worker.d.ts +1 -0
- package/lib/worker.js +45 -0
- package/lib/worker.js.map +1 -0
- package/package.json +2 -2
- package/dist/5fc550bbb6f708833d84.worker.js +0 -2
- package/dist/5fc550bbb6f708833d84.worker.js.map +0 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { quadtree } from 'd3-quadtree';
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
import { octree } from 'd3-octree';
|
|
4
|
+
var theta2 = 0.81; // Barnes-Hut approximation threshold
|
|
5
|
+
var epsilon = 0.1; // 为了防止出现除0的情况,加一个epsilon
|
|
6
|
+
export function forceNBody(calcGraph, factor, coulombDisScale2, accMap, dimensions) {
|
|
7
|
+
if (dimensions === void 0) { dimensions = 2; }
|
|
8
|
+
var weightParam = factor / coulombDisScale2;
|
|
9
|
+
var calcNodes = calcGraph.getAllNodes();
|
|
10
|
+
var data = calcNodes.map(function (calcNode, i) {
|
|
11
|
+
var _a = calcNode.data, nodeStrength = _a.nodeStrength, x = _a.x, y = _a.y, z = _a.z, size = _a.size;
|
|
12
|
+
return {
|
|
13
|
+
x: x,
|
|
14
|
+
y: y,
|
|
15
|
+
z: z,
|
|
16
|
+
size: size,
|
|
17
|
+
index: i,
|
|
18
|
+
id: calcNode.id,
|
|
19
|
+
vx: 0,
|
|
20
|
+
vy: 0,
|
|
21
|
+
vz: 0,
|
|
22
|
+
weight: weightParam * nodeStrength,
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
var tree = (dimensions === 2
|
|
26
|
+
? quadtree(data, function (d) { return d.x; }, function (d) { return d.y; })
|
|
27
|
+
: octree(data, function (d) { return d.x; }, function (d) { return d.y; }, function (d) { return d.z; })).visitAfter(accumulate); // init internal node
|
|
28
|
+
var nodeMap = new Map();
|
|
29
|
+
data.forEach(function (n) {
|
|
30
|
+
nodeMap.set(n.id, n);
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
computeForce(n, tree, dimensions);
|
|
33
|
+
});
|
|
34
|
+
data.map(function (n, i) {
|
|
35
|
+
var _a = calcNodes[i], id = _a.id, data = _a.data;
|
|
36
|
+
var _b = data.mass, mass = _b === void 0 ? 1 : _b;
|
|
37
|
+
// 从 0 开始,= 初始化 + 加斥力
|
|
38
|
+
accMap[id] = {
|
|
39
|
+
x: n.vx / mass,
|
|
40
|
+
y: n.vy / mass,
|
|
41
|
+
z: n.vz / mass,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
return accMap;
|
|
45
|
+
}
|
|
46
|
+
function accumulate(treeNode) {
|
|
47
|
+
var accWeight = 0;
|
|
48
|
+
var accX = 0;
|
|
49
|
+
var accY = 0;
|
|
50
|
+
var accZ = 0;
|
|
51
|
+
var accSize = 0;
|
|
52
|
+
var numChildren = treeNode.length;
|
|
53
|
+
if (numChildren) {
|
|
54
|
+
// internal node, accumulate 4 child quads
|
|
55
|
+
for (var i = 0; i < numChildren; i++) {
|
|
56
|
+
var q = treeNode[i];
|
|
57
|
+
if (q && q.weight) {
|
|
58
|
+
accWeight += q.weight;
|
|
59
|
+
accX += q.x * q.weight;
|
|
60
|
+
accY += q.y * q.weight;
|
|
61
|
+
accZ += q.z * q.weight;
|
|
62
|
+
accSize += q.size * q.weight;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
treeNode.x = accX / accWeight;
|
|
66
|
+
treeNode.y = accY / accWeight;
|
|
67
|
+
treeNode.z = accZ / accWeight;
|
|
68
|
+
treeNode.size = accSize / accWeight;
|
|
69
|
+
treeNode.weight = accWeight;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// leaf node
|
|
73
|
+
var q = treeNode;
|
|
74
|
+
treeNode.x = q.data.x;
|
|
75
|
+
treeNode.y = q.data.y;
|
|
76
|
+
treeNode.z = q.data.z;
|
|
77
|
+
treeNode.size = q.data.size;
|
|
78
|
+
treeNode.weight = q.data.weight;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
var apply = function (treeNode, x1, arg1, arg2, arg3, node, dimensions) {
|
|
82
|
+
var _a;
|
|
83
|
+
if (((_a = treeNode.data) === null || _a === void 0 ? void 0 : _a.id) === node.id)
|
|
84
|
+
return;
|
|
85
|
+
var x2 = [arg1, arg2, arg3][dimensions - 1];
|
|
86
|
+
var dx = node.x - treeNode.x || epsilon;
|
|
87
|
+
var dy = node.y - treeNode.y || epsilon;
|
|
88
|
+
var dz = node.z - treeNode.z || epsilon;
|
|
89
|
+
var pos = [dx, dy, dz];
|
|
90
|
+
var width = x2 - x1;
|
|
91
|
+
var len2 = 0;
|
|
92
|
+
for (var i = 0; i < dimensions; i++) {
|
|
93
|
+
len2 += pos[i] * pos[i];
|
|
94
|
+
}
|
|
95
|
+
var len1 = Math.sqrt(len2);
|
|
96
|
+
var len3 = len1 * len2;
|
|
97
|
+
// far node, apply Barnes-Hut approximation
|
|
98
|
+
if (width * width * theta2 < len2) {
|
|
99
|
+
var param = treeNode.weight / len3;
|
|
100
|
+
node.vx += dx * param;
|
|
101
|
+
node.vy += dy * param;
|
|
102
|
+
node.vz += dz * param;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
// near quad, compute force directly
|
|
106
|
+
if (treeNode.length)
|
|
107
|
+
return false; // internal node, visit children
|
|
108
|
+
// leaf node
|
|
109
|
+
if (treeNode.data !== node) {
|
|
110
|
+
var param = treeNode.data.weight / len3;
|
|
111
|
+
node.vx += dx * param;
|
|
112
|
+
node.vy += dy * param;
|
|
113
|
+
node.vz += dz * param;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
// @ts-ignore
|
|
117
|
+
function computeForce(node, tree, dimensions) {
|
|
118
|
+
// @ts-ignore
|
|
119
|
+
tree.visit(function (treeNode, x1, y1, x2, y2) {
|
|
120
|
+
return apply(treeNode, x1, y1, x2, y2, node, dimensions);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=forceNBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forceNBody.js","sourceRoot":"","sources":["../../src/force/forceNBody.ts"],"names":[],"mappings":"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"}
|