NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/dagre/lib/order/barycenter.js
2023-09-14 14:47:11 +08:00

29 lines
623 B
JavaScript

var _ = require("../lodash");
module.exports = barycenter;
function barycenter(g, movable) {
return _.map(movable, function(v) {
var inV = g.inEdges(v);
if (!inV.length) {
return { v: v };
} else {
var result = _.reduce(inV, function(acc, e) {
var edge = g.edge(e),
nodeU = g.node(e.v);
return {
sum: acc.sum + (edge.weight * nodeU.order),
weight: acc.weight + edge.weight
};
}, { sum: 0, weight: 0 });
return {
v: v,
barycenter: result.sum / result.weight,
weight: result.weight
};
}
});
}