for (int i = 0; i < nodes.length; i++) { if (nodes[i].isFixed() == false && nodes[i].isCollinear() == false && nodes[i].isConstrained() == false && nodes[i].isGear()) { unitVec.makeUnitVec(nodes[i].getCenter(), nodes[i]); d = (nodes[i].getDisplacement().getX() * -unitVec.getY() + nodes[i].getDisplacement().getY() * unitVec.getX()); p.setLocation(nodes[i].getX() + d * -unitVec.getY(), nodes[i].getY() + d * unitVec.getX()); dotVec.makeUnitVec(nodes[i], p); nodes[i].setLocation(nodes[i].getX() + d * -unitVec.getY(), nodes[i].getY() + d * unitVec.getX()); //determine direction if (nodes[i].getY() > nodes[i].getCenter().getY()) { if (dotVec.getX() > 0) { ccw = true; } if (dotVec.getX() < 0) { cw = true; } } if (nodes[i].getY() < nodes[i].getCenter().getY()) { if (dotVec.getX() > 0) { cw = true; } if (dotVec.getX() < 0) { ccw = true; } } if (nodes[i].getX() == nodes[i].getCenter().getX()) { if (nodes[i].getY() > nodes[i].getCenter().getY()) { if (dotVec.getX() > 0) { ccw = true; } if (dotVec.getX() < 0) { cw = true; } } if (nodes[i].getY() < nodes[i].getCenter().getY()) { if (dotVec.getX() > 0) { cw = true; } if (dotVec.getX() < 0) { ccw = true; } } } if (nodes[i].getY() == nodes[i].getCenter().getY()) { if (nodes[i].getX() > nodes[i].getCenter().getX()) { if (dotVec.getY() > 0) { ccw = true; } if (dotVec.getY() < 0) { cw = true; } } if (nodes[i].getX() < nodes[i].getCenter().getX()) { if (dotVec.getY() > 0) { cw = true; } if (dotVec.getY() < 0) { ccw = true; } } } if (cw == false && ccw == false) { //System.out.println(d); } unitVec.makeUnitVec(nodes[nodes[i].getBuddy()].getCenter(), nodes[nodes[i].getBuddy()]); /* if (cw) { nodes[nodes[i].getBuddy()].setLocation( nodes[nodes[i].getBuddy()].getX() - Math.abs(d) * -unitVec.getY(), nodes[nodes[i].getBuddy()].getY() - Math.abs(d) * unitVec.getX()); } if (ccw) { nodes[nodes[i].getBuddy()].setLocation( nodes[nodes[i].getBuddy()].getX() + Math.abs(d) * -unitVec.getY(), nodes[nodes[i].getBuddy()].getY() + Math.abs(d) * unitVec.getX()); } */ nodes[nodes[i].getBuddy()].setLocation( nodes[nodes[i].getBuddy()].getX() - d * -unitVec.getY(), nodes[nodes[i].getBuddy()].getY() - d * unitVec.getX()); nodes[nodes[i].getBuddy()].setDisplacement(0, 0); } }