Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function layoutClusters(layerClusters, centroid) {
// Create world with zero gravity.
let world = planck.World({
gravity: planck.Vec2(0,0)
});
// Create bodies for groups.
let layerClusterBodies = [];
layerClusters.forEach(function(layerCluster) {
layerClusterBodies.push(createClusterBody(layerCluster, world));
});
// Create attractor.
let attractorBody = world.createBody(planck.Vec2(centroid.x, centroid.y));
// Create joints between layerClusterBodies and attractor.
layerClusterBodies.forEach(function(layerClusterBody) {
let distanceJoint = planck.DistanceJoint( {
frequencyHz : 0.9, // TODO: Try to avoid overlapping in large datasets!
dampingRatio : 0.001 // TODO: ''
function layoutClusters(layerClusters, centroid) {
// Create world with zero gravity.
let world = planck.World({
gravity: planck.Vec2(0,0)
});
// Create bodies for groups.
let layerClusterBodies = [];
layerClusters.forEach(function(layerCluster) {
layerClusterBodies.push(createClusterBody(layerCluster, world));
});
// Create attractor.
let attractorBody = world.createBody(planck.Vec2(centroid.x, centroid.y));
// Create joints between layerClusterBodies and attractor.
layerClusterBodies.forEach(function(layerClusterBody) {
let distanceJoint = planck.DistanceJoint( {
frequencyHz : 0.9, // TODO: Try to avoid overlapping in large datasets!
dampingRatio : 0.001 // TODO: ''
},
attractorBody,
attractorBody.getPosition(),
layerClusterBody,
layerClusterBody.getPosition()
);
distanceJoint.m_length = 0; // Set the length to zero as it's calculated as the distance between the anchors. TODO: PR on planck-js repo to fix bug.
world.createJoint(distanceJoint);
});
function layoutClusters(layerClusters, centroid) {
// Create world with zero gravity.
let world = planck.World({
gravity: planck.Vec2(0,0)
});
// Create bodies for groups.
let layerClusterBodies = [];
layerClusters.forEach(function(layerCluster) {
layerClusterBodies.push(createClusterBody(layerCluster, world));
});
// Create attractor.
let attractorBody = world.createBody(planck.Vec2(centroid.x, centroid.y));
// Create joints between layerClusterBodies and attractor.
layerClusterBodies.forEach(function(layerClusterBody) {
let distanceJoint = planck.DistanceJoint( {
frequencyHz : 0.9, // TODO: Try to avoid overlapping in large datasets!
layerClusterBodies.forEach(function(layerClusterBody) {
let distanceJoint = planck.DistanceJoint( {
frequencyHz : 0.9, // TODO: Try to avoid overlapping in large datasets!
dampingRatio : 0.001 // TODO: ''
},
attractorBody,
attractorBody.getPosition(),
layerClusterBody,
layerClusterBody.getPosition()
);
distanceJoint.m_length = 0; // Set the length to zero as it's calculated as the distance between the anchors. TODO: PR on planck-js repo to fix bug.
world.createJoint(distanceJoint);
});
layerCluster.nodes.forEach(function(circle) {
let centerGlobal = planck.Vec2(circle.x, circle.y);
let centerLocal = centerGlobal.sub(bodyCentroid);
let fixture = body.createFixture(planck.Circle(centerLocal, circle.r + circle.planckPadding), circleFD);
fixture.setUserData(circle);
});
layerCluster.nodes.forEach(function(circle) {
let centerGlobal = planck.Vec2(circle.x, circle.y);
let centerLocal = centerGlobal.sub(bodyCentroid);
let fixture = body.createFixture(planck.Circle(centerLocal, circle.r + circle.planckPadding), circleFD);
fixture.setUserData(circle);
});