@antv/layout 1.2.10 → 1.2.11-beta.0

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.
Files changed (134) hide show
  1. package/dist/{5fc550bbb6f708833d84.worker.js → 1364056b7ad586222caf.worker.js} +2 -2
  2. package/dist/1364056b7ad586222caf.worker.js.map +1 -0
  3. package/dist/index.min.js +1 -1
  4. package/dist/index.min.js.map +1 -1
  5. package/lib/bundle-entry.js +19 -0
  6. package/lib/bundle-entry.js.map +1 -0
  7. package/lib/bundle-supervisor.js +94 -0
  8. package/lib/bundle-supervisor.js.map +1 -0
  9. package/lib/bundle-worker.js +53 -0
  10. package/lib/bundle-worker.js.map +1 -0
  11. package/lib/circular.js +258 -0
  12. package/lib/circular.js.map +1 -0
  13. package/lib/comboCombined.js +441 -0
  14. package/lib/comboCombined.js.map +1 -0
  15. package/lib/concentric.js +229 -0
  16. package/lib/concentric.js.map +1 -0
  17. package/lib/d3Force/forceInBox.js +331 -0
  18. package/lib/d3Force/forceInBox.js.map +1 -0
  19. package/lib/d3Force/index.js +339 -0
  20. package/lib/d3Force/index.js.map +1 -0
  21. package/lib/dagre/acyclic.js +62 -0
  22. package/lib/dagre/acyclic.js.map +1 -0
  23. package/lib/dagre/add-border-segments.js +37 -0
  24. package/lib/dagre/add-border-segments.js.map +1 -0
  25. package/lib/dagre/coordinate-system.js +65 -0
  26. package/lib/dagre/coordinate-system.js.map +1 -0
  27. package/lib/dagre/data/list.js +50 -0
  28. package/lib/dagre/data/list.js.map +1 -0
  29. package/lib/dagre/greedy-fas.js +147 -0
  30. package/lib/dagre/greedy-fas.js.map +1 -0
  31. package/lib/dagre/layout.js +470 -0
  32. package/lib/dagre/layout.js.map +1 -0
  33. package/lib/dagre/nesting-graph.js +153 -0
  34. package/lib/dagre/nesting-graph.js.map +1 -0
  35. package/lib/dagre/normalize.js +98 -0
  36. package/lib/dagre/normalize.js.map +1 -0
  37. package/lib/dagre/order/add-subgraph-constraints.js +45 -0
  38. package/lib/dagre/order/add-subgraph-constraints.js.map +1 -0
  39. package/lib/dagre/order/barycenter.js +23 -0
  40. package/lib/dagre/order/barycenter.js.map +1 -0
  41. package/lib/dagre/order/build-layer-graph.js +96 -0
  42. package/lib/dagre/order/build-layer-graph.js.map +1 -0
  43. package/lib/dagre/order/cross-count.js +63 -0
  44. package/lib/dagre/order/cross-count.js.map +1 -0
  45. package/lib/dagre/order/index.js +91 -0
  46. package/lib/dagre/order/index.js.map +1 -0
  47. package/lib/dagre/order/init-data-order.js +28 -0
  48. package/lib/dagre/order/init-data-order.js.map +1 -0
  49. package/lib/dagre/order/init-order.js +50 -0
  50. package/lib/dagre/order/init-order.js.map +1 -0
  51. package/lib/dagre/order/resolve-conflicts.js +121 -0
  52. package/lib/dagre/order/resolve-conflicts.js.map +1 -0
  53. package/lib/dagre/order/sort-subgraph.js +84 -0
  54. package/lib/dagre/order/sort-subgraph.js.map +1 -0
  55. package/lib/dagre/order/sort.js +74 -0
  56. package/lib/dagre/order/sort.js.map +1 -0
  57. package/lib/dagre/parent-dummy-chains.js +80 -0
  58. package/lib/dagre/parent-dummy-chains.js.map +1 -0
  59. package/lib/dagre/position/bk.js +398 -0
  60. package/lib/dagre/position/bk.js.map +1 -0
  61. package/lib/dagre/position/index.js +54 -0
  62. package/lib/dagre/position/index.js.map +1 -0
  63. package/lib/dagre/rank/feasible-tree.js +164 -0
  64. package/lib/dagre/rank/feasible-tree.js.map +1 -0
  65. package/lib/dagre/rank/index.js +48 -0
  66. package/lib/dagre/rank/index.js.map +1 -0
  67. package/lib/dagre/rank/network-simplex.js +232 -0
  68. package/lib/dagre/rank/network-simplex.js.map +1 -0
  69. package/lib/dagre/rank/util.js +138 -0
  70. package/lib/dagre/rank/util.js.map +1 -0
  71. package/lib/dagre/util.js +289 -0
  72. package/lib/dagre/util.js.map +1 -0
  73. package/lib/dagre.js +552 -0
  74. package/lib/dagre.js.map +1 -0
  75. package/lib/force/forceNBody.js +123 -0
  76. package/lib/force/forceNBody.js.map +1 -0
  77. package/lib/force/index.js +805 -0
  78. package/lib/force/index.js.map +1 -0
  79. package/lib/force/types.js +2 -0
  80. package/lib/force/types.js.map +1 -0
  81. package/lib/forceAtlas2/body.js +91 -0
  82. package/lib/forceAtlas2/body.js.map +1 -0
  83. package/lib/forceAtlas2/index.js +562 -0
  84. package/lib/forceAtlas2/index.js.map +1 -0
  85. package/lib/forceAtlas2/quad.js +98 -0
  86. package/lib/forceAtlas2/quad.js.map +1 -0
  87. package/lib/forceAtlas2/quadTree.js +105 -0
  88. package/lib/forceAtlas2/quadTree.js.map +1 -0
  89. package/lib/fruchterman.js +376 -0
  90. package/lib/fruchterman.js.map +1 -0
  91. package/lib/grid.js +308 -0
  92. package/lib/grid.js.map +1 -0
  93. package/lib/index.js +17 -0
  94. package/lib/index.js.map +1 -0
  95. package/lib/mds.js +137 -0
  96. package/lib/mds.js.map +1 -0
  97. package/lib/radial/index.js +355 -0
  98. package/lib/radial/index.js.map +1 -0
  99. package/lib/radial/mds.js +29 -0
  100. package/lib/radial/mds.js.map +1 -0
  101. package/lib/radial/radial-nonoverlap-force.js +100 -0
  102. package/lib/radial/radial-nonoverlap-force.js.map +1 -0
  103. package/lib/random.js +98 -0
  104. package/lib/random.js.map +1 -0
  105. package/lib/registry.js +27 -0
  106. package/lib/registry.js.map +1 -0
  107. package/lib/supervisor.js +90 -0
  108. package/lib/supervisor.js.map +1 -0
  109. package/lib/types.js +4 -0
  110. package/lib/types.js.map +1 -0
  111. package/lib/util/array.js +2 -0
  112. package/lib/util/array.js.map +1 -0
  113. package/lib/util/common.d.ts +12 -0
  114. package/lib/util/common.js +32 -0
  115. package/lib/util/common.js.map +1 -0
  116. package/lib/util/function.js +126 -0
  117. package/lib/util/function.js.map +1 -0
  118. package/lib/util/gpu.js +214 -0
  119. package/lib/util/gpu.js.map +1 -0
  120. package/lib/util/index.js +7 -0
  121. package/lib/util/index.js.map +1 -0
  122. package/lib/util/math.js +257 -0
  123. package/lib/util/math.js.map +1 -0
  124. package/lib/util/number.js +5 -0
  125. package/lib/util/number.js.map +1 -0
  126. package/lib/util/object.js +42 -0
  127. package/lib/util/object.js.map +1 -0
  128. package/lib/util/string.js +15 -0
  129. package/lib/util/string.js.map +1 -0
  130. package/lib/worker.d.ts +1 -0
  131. package/lib/worker.js +45 -0
  132. package/lib/worker.js.map +1 -0
  133. package/package.json +1 -1
  134. 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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"}