All pastes #494683 Raw Edit

Viki

public text v1 · immutable
·published 2007-05-18 11:18 UTC
rendered paste body
for (int a = 0; a < nodes.length; a++) {
                for (int b = a + 1; b < nodes.length; b++) {
                    Node nodeA = nodes[a];
                    Node nodeB = nodes[b];
                    
                    double deltaX = nodeB.getX() - nodeA.getX();
                    double deltaY = nodeB.getY() - nodeA.getY();
                    
                    double distanceSquared = deltaX * deltaX + deltaY * deltaY;
                    
                    if (distanceSquared < 0.01) {
                        deltaX = Math.random() / 10 + 0.1;
                        deltaY = Math.random() / 10 + 0.1;
                        distanceSquared = deltaX * deltaX + deltaY * deltaY;
                    }
                    
                    double distance = Math.sqrt(distanceSquared);
                    
                    if (distance < maxRepulsiveForceDistance) {
                        double repulsiveForce = (k * k / distance);
                        
                        nodeB.setFX(nodeB.getFX() + (repulsiveForce * deltaX / distance));
                        nodeB.setFY(nodeB.getFY() + (repulsiveForce * deltaY / distance));
                        nodeA.setFX(nodeA.getFX() - (repulsiveForce * deltaX / distance));
                        nodeA.setFY(nodeA.getFY() - (repulsiveForce * deltaY / distance));
                    }
                }