ngraph.forcelayout
Version:
Force directed graph drawing layout
24 lines (19 loc) • 766 B
JavaScript
const createPatternBuilder = require('./createPatternBuilder');
module.exports = generateCreateDragForceFunction;
module.exports.generateCreateDragForceFunctionBody = generateCreateDragForceFunctionBody;
function generateCreateDragForceFunction(dimension) {
let code = generateCreateDragForceFunctionBody(dimension);
return new Function('options', code);
}
function generateCreateDragForceFunctionBody(dimension) {
let pattern = createPatternBuilder(dimension);
let code = `
if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number');
return {
update: function(body) {
${pattern('body.force.{var} -= options.dragCoefficient * body.velocity.{var};', {indent: 6})}
}
};
`;
return code;
}