private synchronized void adjust() { // Generate random position in graph space tempISOM = new ISOMVertexData(); tempXYD = new Coordinates(); // creates a new XY data location tempXYD.setX(10 + Math.random() * getCurrentSize().getWidth()); tempXYD.setY(10 + Math.random() * getCurrentSize().getHeight()); // Get closest vertex to random position Vertex winner = elementAccessor.getVertex(tempXYD.getX(), tempXYD.getY()); while (true) { try { for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext(); ) { Vertex v = (Vertex) iter.next(); ISOMVertexData ivd = getISOMVertexData(v); ivd.distance = 0; ivd.visited = false; } break; } catch (ConcurrentModificationException cme) { } } adjustVertex(winner); }
/** * (non-Javadoc) * * @see * edu.uci.ics.jung.visualization.AbstractLayout#initialize_local_vertex(edu.uci.ics.jung.graph.Vertex) */ protected void initialize_local_vertex(Vertex v) { ISOMVertexData vd = getISOMVertexData(v); if (vd == null) { vd = new ISOMVertexData(); v.addUserDatum(getIsomKey(), vd, UserData.REMOVE); } vd.visited = false; }
private synchronized void adjustVertex(Vertex v) { queue.removeAllElements(); ISOMVertexData ivd = getISOMVertexData(v); ivd.distance = 0; ivd.visited = true; queue.add(v); Vertex current; while (!queue.isEmpty()) { current = (Vertex) queue.remove(0); ISOMVertexData currData = getISOMVertexData(current); Coordinates currXYData = getCoordinates(current); double dx = tempXYD.getX() - currXYData.getX(); double dy = tempXYD.getY() - currXYData.getY(); double factor = adaption / Math.pow(2, currData.distance); currXYData.addX(factor * dx); currXYData.addY(factor * dy); if (currData.distance < radius) { Set s = current.getNeighbors(); while (true) { try { for (Iterator iter = s.iterator(); iter.hasNext(); ) { Vertex child = (Vertex) iter.next(); ISOMVertexData childData = getISOMVertexData(child); if (childData != null && !childData.visited) { childData.visited = true; childData.distance = currData.distance + 1; queue.addElement(child); } } break; } catch (ConcurrentModificationException cme) { } } } } }