82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
/* *
|
|
*
|
|
* (c) 2010-2021 Grzegorz Blachlinski, Sebastian Bochan
|
|
*
|
|
* License: www.highcharts.com/license
|
|
*
|
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
*
|
|
* */
|
|
'use strict';
|
|
import H from '../../Core/Globals.js';
|
|
var noop = H.noop;
|
|
import VerletIntegration from '../Networkgraph/VerletIntegration.js';
|
|
/* *
|
|
*
|
|
* Functions
|
|
*
|
|
* */
|
|
/**
|
|
* @private
|
|
*/
|
|
function barycenter() {
|
|
var layout = this, gravitationalConstant = layout.options.gravitationalConstant, box = layout.box, nodes = layout.nodes;
|
|
var centerX, centerY;
|
|
for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
|
|
var node = nodes_1[_i];
|
|
if (layout.options.splitSeries && !node.isParentNode) {
|
|
centerX = node.series.parentNode.plotX;
|
|
centerY = node.series.parentNode.plotY;
|
|
}
|
|
else {
|
|
centerX = box.width / 2;
|
|
centerY = box.height / 2;
|
|
}
|
|
if (!node.fixedPosition) {
|
|
node.plotX -=
|
|
(node.plotX - centerX) *
|
|
gravitationalConstant /
|
|
(node.mass * Math.sqrt(nodes.length));
|
|
node.plotY -=
|
|
(node.plotY - centerY) *
|
|
gravitationalConstant /
|
|
(node.mass * Math.sqrt(nodes.length));
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* @private
|
|
*/
|
|
function repulsive(node, force, distanceXY, repNode) {
|
|
var factor = (force * this.diffTemperature / node.mass /
|
|
node.degree), x = distanceXY.x * factor, y = distanceXY.y * factor;
|
|
if (!node.fixedPosition) {
|
|
node.plotX += x;
|
|
node.plotY += y;
|
|
}
|
|
if (!repNode.fixedPosition) {
|
|
repNode.plotX -= x;
|
|
repNode.plotY -= y;
|
|
}
|
|
}
|
|
/**
|
|
* @private
|
|
*/
|
|
function repulsiveForceFunction(d, k, node, repNode) {
|
|
return Math.min(d, (node.marker.radius +
|
|
repNode.marker.radius) / 2);
|
|
}
|
|
/* *
|
|
*
|
|
* Default Export
|
|
*
|
|
* */
|
|
var PackedBubbleIntegration = {
|
|
barycenter: barycenter,
|
|
getK: noop,
|
|
integrate: VerletIntegration.integrate,
|
|
repulsive: repulsive,
|
|
repulsiveForceFunction: repulsiveForceFunction
|
|
};
|
|
export default PackedBubbleIntegration;
|