@Override public void setup(Node[] nodes, Node clickedNode) { this.nodes = nodes; size = clickedNode.size();//Show size of the clicked node in UI }
@Override public float getCollisionDistance(double angle) { return node.size(); } }
@Override public void pressNodes(Node[] nodes) { Sizer.this.nodes = nodes; sizes = new float[nodes.length]; for (int i = 0; i < nodes.length; i++) { Node n = nodes[i]; sizes[i] = n.size(); } }
@Override public float getSizeFactor3d(float sizeFactor, NodeModel model) { return sizeFactor * model.getNode().size() / 10f; //Between 0.1 and 2 }
@Override public boolean selectionTest(Vecf distanceFromMouse, float selectionSize) { return distanceFromMouse.get(2) - selectionSize < node.size(); }
private boolean clickingInNode(Node node, PreviewMouseEvent event) { float xdiff = node.x() - event.x; float ydiff = -node.y() - event.y;//Note that y axis is inverse for node coordinates float radius = node.size(); return xdiff * xdiff + ydiff * ydiff < radius * radius; } }
@Override public float getSizeFactor2d(float sizeFactor, NodeModel model) { return FACTOR * model.getNode().size() * sizeFactor / model.getCameraDistance(); }
@Override public void apply(Node n1, Node n2, double e) { ForceAtlas2LayoutData n1Layout = n1.getLayoutData(); ForceAtlas2LayoutData n2Layout = n2.getLayoutData(); // Get the distance double xDist = n1.x() - n2.x(); double yDist = n1.y() - n2.y(); double distance = Math.sqrt(xDist * xDist + yDist * yDist) - n1.size() - n2.size(); if (distance > 0) { // NB: factor = force / distance double factor = -coefficient * e * Math.log(1 + distance) / distance / n1Layout.mass; n1Layout.dx += xDist * factor; n1Layout.dy += yDist * factor; n2Layout.dx -= xDist * factor; n2Layout.dy -= yDist * factor; } } }
public static void fcBiAttractor_noCollide(Node N1, Node N2, double c) { double xDist = N1.x() - N2.x(); // distance en x entre les deux noeuds double yDist = N1.y() - N2.y(); double dist = (float) Math.sqrt(xDist * xDist + yDist * yDist) - N1.size() - N2.size(); // distance (from the border of each node) if (dist > 0) { double f = attraction(c, dist); ForceVectorNodeLayoutData N1L = N1.getLayoutData(); ForceVectorNodeLayoutData N2L = N2.getLayoutData(); N1L.dx += xDist / dist * f; N1L.dy += yDist / dist * f; N2L.dx -= xDist / dist * f; N2L.dy -= yDist / dist * f; } }
@Override public void apply(Node n1, Node n2, double e) { ForceAtlas2LayoutData n1Layout = n1.getLayoutData(); ForceAtlas2LayoutData n2Layout = n2.getLayoutData(); // Get the distance double xDist = n1.x() - n2.x(); double yDist = n1.y() - n2.y(); double distance = Math.sqrt(xDist * xDist + yDist * yDist) - n1.size() - n2.size(); if (distance > 0) { // NB: factor = force / distance double factor = -coefficient * e * Math.log(1 + distance) / distance; n1Layout.dx += xDist * factor; n1Layout.dy += yDist * factor; n2Layout.dx -= xDist * factor; n2Layout.dy -= yDist * factor; } } }
@Override public void apply(Node n1, Node n2, double e) { ForceAtlas2LayoutData n1Layout = n1.getLayoutData(); ForceAtlas2LayoutData n2Layout = n2.getLayoutData(); // Get the distance double xDist = n1.x() - n2.x(); double yDist = n1.y() - n2.y(); double distance = Math.sqrt(xDist * xDist + yDist * yDist) - n1.size() - n2.size(); if (distance > 0) { // NB: factor = force / distance double factor = -coefficient * e / n1Layout.mass; n1Layout.dx += xDist * factor; n1Layout.dy += yDist * factor; n2Layout.dx -= xDist * factor; n2Layout.dy -= yDist * factor; } } }
@Override public void apply(Node n1, Node n2, double e) { ForceAtlas2LayoutData n1Layout = n1.getLayoutData(); ForceAtlas2LayoutData n2Layout = n2.getLayoutData(); // Get the distance double xDist = n1.x() - n2.x(); double yDist = n1.y() - n2.y(); double distance = Math.sqrt(xDist * xDist + yDist * yDist) - n1.size() - n2.size(); if (distance > 0) { // NB: factor = force / distance double factor = -coefficient * e; n1Layout.dx += xDist * factor; n1Layout.dy += yDist * factor; n2Layout.dx -= xDist * factor; n2Layout.dy -= yDist * factor; } } }
public static void fcBiRepulsor_noCollide(Node N1, Node N2, double c) { double xDist = N1.x() - N2.x(); // distance en x entre les deux noeuds double yDist = N1.y() - N2.y(); double dist = (float) Math.sqrt(xDist * xDist + yDist * yDist) - N1.size() - N2.size(); // distance (from the border of each node) if (dist > 0) { double f = repulsion(c, dist); ForceVectorNodeLayoutData N1L = N1.getLayoutData(); ForceVectorNodeLayoutData N2L = N2.getLayoutData(); N1L.dx += xDist / dist * f; N1L.dy += yDist / dist * f; N2L.dx -= xDist / dist * f; N2L.dy -= yDist / dist * f; } else if (dist != 0) { double f = -c; //flat repulsion ForceVectorNodeLayoutData N1L = N1.getLayoutData(); ForceVectorNodeLayoutData N2L = N2.getLayoutData(); N1L.dx += xDist / dist * f; N1L.dy += yDist / dist * f; N2L.dx -= xDist / dist * f; N2L.dy -= yDist / dist * f; } }
@Override public void chooseModel(Model object3d) { NodeDiskModel obj = (NodeDiskModel) object3d; if (config.isDisableLOD()) { obj.modelType = SHAPE_DISK64; obj.modelBorderType = BORDER64; return; } float distance = cameraDistance(obj) / (obj.getNode().size() * drawable.getGlobalScale()); if (distance > 600) { obj.modelType = SHAPE_DIAMOND; obj.modelBorderType = -1; } else if (distance > 50) { obj.modelType = SHAPE_DISK16; obj.modelBorderType = BORDER16; } else { obj.modelType = SHAPE_DISK32; obj.modelBorderType = BORDER32; } }
public void centerOnNode(Node node) { if (node != null) { VizController.getInstance().getGraphIO().centerOnCoordinate(node.x(), node.y(), node.z() + node.size() * 8); engine.getScheduler().requireUpdateVisible(); } }
private void copyNodeProperties(Node node, Node nodeCopy) { nodeCopy.setPosition(node.x(), node.y(), node.z()); nodeCopy.setColor(node.getColor()); nodeCopy.setFixed(node.isFixed()); nodeCopy.setLabel(node.getLabel()); nodeCopy.setSize(node.size()); }
private void copyNodeProperties(Node node, Node nodeCopy) { nodeCopy.setPosition(node.x(), node.y(), node.z()); nodeCopy.setColor(node.getColor()); nodeCopy.setFixed(node.isFixed()); nodeCopy.setLabel(node.getLabel()); nodeCopy.setSize(node.size()); }
@Override public Item[] getItems(Graph graph) { Item[] items = new NodeItem[graph.getNodeCount()]; int i = 0; for (Node n : graph.getNodes()) { NodeItem nodeItem = new NodeItem(n); nodeItem.setData(NodeItem.X, n.x()); nodeItem.setData(NodeItem.Y, -n.y()); nodeItem.setData(NodeItem.Z, n.z()); nodeItem.setData(NodeItem.SIZE, n.size() * 2f); nodeItem.setData(NodeItem.COLOR, n.getColor()); items[i++] = nodeItem; } return items; }
private Node copyNode(Node node, Graph graph) { Node copy = buildNode(graph, node.getLabel()); //Copy properties (position, size and color): copy.setX(node.x()); copy.setY(node.y()); copy.setZ(node.z()); copy.setSize(node.size()); copy.setR(node.r()); copy.setG(node.g()); copy.setB(node.b()); copy.setAlpha(node.alpha()); Table nodeTable = graph.getModel().getNodeTable(); //Copy attributes: for (Column column : nodeTable) { if (!column.isReadOnly()) { copy.setAttribute(column, node.getAttribute(column)); } } graph.addNode(copy); return copy; }