Class SpringDrawing
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.Applet
processing.core.PApplet
SpringDrawing
- All Implemented Interfaces:
FocusListener,KeyListener,MouseListener,MouseMotionListener,ImageObserver,MenuContainer,Serializable,Runnable,EventListener,Accessible,processing.core.PConstants
public class SpringDrawing
extends processing.core.PApplet
A program for computing network layouts with the "spring embedder" paradigm
examples of input parameters:
data/ash85.mtx
- Author:
- Luca Castelli Aleardi (Ecole Polytechnique, 2021)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class processing.core.PApplet
processing.core.PApplet.RegisteredMethods, processing.core.PApplet.RendererChangeExceptionNested classes/interfaces inherited from class java.applet.Applet
Applet.AccessibleAppletNested classes/interfaces inherited from class java.awt.Panel
Panel.AccessibleAWTPanelNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescription(package private) Jcg.geometry.Point_2(package private) Jcg.geometry.Point_2private int(package private) doubleJcg.geometry.Point_2private intprivate intstatic AdjacencyListGraphinput graph to drawLayout algorithmbooleannode selected with mouse click (to show)static intstatic intprotected doubleprotected doubleprotected doubleprotected doubleFields inherited from class processing.core.PApplet
args, ARGS_BGCOLOR, ARGS_DISPLAY, ARGS_EDITOR_LOCATION, ARGS_EXCLUSIVE, ARGS_EXTERNAL, ARGS_HIDE_STOP, ARGS_LOCATION, ARGS_PRESENT, ARGS_SKETCH_FOLDER, ARGS_STOP_COLOR, DEFAULT_HEIGHT, DEFAULT_WIDTH, defaultSize, disposeMethods, dmouseX, dmouseY, drawMethods, emouseX, emouseY, exitCalled, EXTERNAL_MOVE, EXTERNAL_STOP, finished, firstMouse, focused, frame, frameCount, frameRate, frameRateLastNanos, frameRatePeriod, frameRateTarget, g, height, ICON_IMAGE, javaVersion, javaVersionName, key, keyCode, keyEvent, keyEventMethods, keyPressed, loadImageFormats, loadShapeFormats, looping, matchPatterns, MENU_SHORTCUT, MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH, mouseButton, mouseEvent, mouseEventMethods, mousePressed, mouseX, mouseY, online, parentFrame, paused, pixels, platform, pmouseX, pmouseY, postMethods, preMethods, recorder, redraw, requestImageMax, screen, screenHeight, screenWidth, selectedFile, sizeMethods, sketchPath, useQuartz, widthFields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface processing.core.PConstants
A, AB, ADD, AG, ALPHA, ALPHA_MASK, ALT, AMBIENT, AR, ARC, ARGB, ARROW, B, BACKSPACE, BASELINE, BEEN_LIT, BEVEL, BILINEAR, BLEND, BLUE_MASK, BLUR, BOTTOM, BOX, BURN, CENTER, CENTER_DIAMETER, CENTER_RADIUS, CHATTER, CLAMP, CLOSE, CMYK, CODED, COMPLAINT, CONTROL, CORNER, CORNERS, CROSS, CUSTOM, DA, DARKEST, DB, DEG_TO_RAD, DELETE, DG, DIAMETER, DIFFERENCE, DILATE, DIRECTIONAL, DISABLE_ACCURATE_TEXTURES, DISABLE_DEPTH_MASK, DISABLE_DEPTH_SORT, DISABLE_DEPTH_TEST, DISABLE_NATIVE_FONTS, DISABLE_OPENGL_2X_SMOOTH, DISABLE_OPENGL_ERROR_REPORT, DODGE, DOWN, DR, DXF, DYNAMIC, EB, EDGE, EG, ELLIPSE, ENABLE_ACCURATE_TEXTURES, ENABLE_DEPTH_MASK, ENABLE_DEPTH_SORT, ENABLE_DEPTH_TEST, ENABLE_NATIVE_FONTS, ENABLE_OPENGL_2X_SMOOTH, ENABLE_OPENGL_4X_SMOOTH, ENABLE_OPENGL_ERROR_REPORT, ENTER, EPSILON, ER, ERODE, ERROR_BACKGROUND_IMAGE_FORMAT, ERROR_BACKGROUND_IMAGE_SIZE, ERROR_PUSHMATRIX_OVERFLOW, ERROR_PUSHMATRIX_UNDERFLOW, ERROR_TEXTFONT_NULL_PFONT, ESC, EXCLUSION, FIXED, G, GIF, GRAY, GREEN_MASK, HALF_PI, HAND, HARD_LIGHT, HAS_NORMAL, HINT_COUNT, HSB, IMAGE, INVERT, JAVA2D, JPEG, LEFT, LIGHTEST, LINE, LINE_LOOP, LINE_STRIP, LINEAR, LINES, LINUX, MACOSX, MAX_FLOAT, MAX_INT, MIN_FLOAT, MIN_INT, MITER, MODEL, MODELVIEW, MOVE, MULTIPLY, NORMAL, NORMALIZED, NX, NY, NZ, OPAQUE, OPEN, OPENGL, OPENGL2, ORTHOGRAPHIC, OTHER, OVERLAY, P2D, P3D, PATH, PDF, PERSPECTIVE, PI, platformNames, POINT, POINT_SPRITES, POINTS, POLYGON, POSTERIZE, PROBLEM, PROG_GL2, PROG_GL3, PROG_GL4, PROJECT, PROJECTION, QUAD, QUAD_STRIP, QUADRATIC, QUADS, QUARTER_PI, R, RAD_TO_DEG, RADIUS, RECT, RED_MASK, REPEAT, REPLACE, RETURN, RGB, RIGHT, ROUND, SA, SB, SCREEN, SG, SHAPE, SHIFT, SHINE, SOFT_LIGHT, SPB, SPG, SPHERE, SPOT, SPR, SQUARE, SR, STATIC, STREAM, SUBTRACT, SW, TAB, TARGA, TEXT, TEXTURE2D, THIRD_PI, THRESHOLD, TIFF, TOP, TRIANGLE, TRIANGLE_FAN, TRIANGLE_STRIP, TRIANGLES, TRILINEAR, TWO_PI, TX, TY, TZ, U, UP, V, VERTEX_FIELD_COUNT, VW, VX, VY, VZ, WAIT, WHITESPACE, WINDOWS, X, Y, Z -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondouble[]Return the current coordinates of the bounding boxvoidDraw the skeleton of a graph in 2D using a Processing framevoiddraw()Main method for drawing the appletvoiddrawColoredSegment(Jcg.geometry.Point_2 u, Jcg.geometry.Point_2 v, int r, int g, int b) Draw a colored edge (u, v)voidvoiddrawSegment(Jcg.geometry.Point_2 u, Jcg.geometry.Point_2 v) Draw a gray edge (u, v)voiddrawVertex(Node u, double distortion, double maxDistortion) Draw a vertex u on the canvasvoidDraw a vertex label on the canvas (close to the node location)int[]getPoint(Jcg.geometry.Point_2 v) Return the integer coordinates of a pixel corresponding to a given point Warning: we must take care of the following parameters: -) the size of the canvas -) the size of bottom and left panels -) the negative direction of y-coordinates (in java drawing)Compute the label of a vertex, from its index, spectral distortion and vertex agevoidDeal with keyboard eventsstatic voidFor running the PApplet as Java applicationvoidvoidvoidvoidvoidselectNode(int i, int j) Select the vertex whose 2d projection is the closest to pixel (i, j)voidsetup()Initialize the frameprotected voidupdate(double x, double y) Update of the bounding boxvoidUpdate the range of the drawing region (defined by corners points 'a' and 'b')voidzoom(double factor) Methods inherited from class processing.core.PApplet
abs, abs, acos, addListeners, alpha, ambient, ambient, ambient, ambientLight, ambientLight, append, append, append, append, append, append, applyMatrix, applyMatrix, applyMatrix, applyMatrix, applyMatrix, arc, arraycopy, arraycopy, arraycopy, arrayCopy, arrayCopy, arrayCopy, asin, atan, atan2, autoNormal, background, background, background, background, background, background, background, beginCamera, beginRaw, beginRaw, beginRecord, beginRecord, beginRecord, beginShape, beginShape, beginText, bezier, bezier, bezierDetail, bezierPoint, bezierTangent, bezierVertex, bezierVertex, binary, binary, binary, binary, blend, blend, blendColor, blue, box, box, breakShape, brightness, camera, camera, ceil, checkKeyEvent, checkMouseEvent, checkParentFrame, color, color, color, color, color, color, color, color, colorMode, colorMode, colorMode, colorMode, concat, concat, concat, concat, concat, concat, concat, constrain, constrain, copy, copy, cos, createDefaultFont, createFont, createFont, createFont, createGraphics, createGraphics, createImage, createImage, createInput, createInput, createInputRaw, createOutput, createOutput, createPath, createPath, createReader, createReader, createReader, createShape, createWriter, createWriter, createWriter, cursor, cursor, cursor, cursor, curve, curve, curveDetail, curvePoint, curveTangent, curveTightness, curveVertex, curveVertex, dataFile, dataPath, day, degrees, delay, delete, dequeueKeyEvents, dequeueMouseEvents, destroy, die, die, directionalLight, displayable, dispose, dist, dist, edge, ellipse, ellipseMode, emissive, emissive, emissive, endCamera, endRaw, endRecord, endShape, endShape, endText, enqueueKeyEvent, enqueueMouseEvent, exec, exit, exp, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, expand, fill, fill, fill, fill, fill, fill, filter, filter, floor, flush, focusGained, focusGained, focusLost, focusLost, frameRate, frustum, get, get, get, getCache, getMatrix, getMatrix, getMatrix, getParams, green, handleDraw, handleKeyEvent, handleMouseEvent, hex, hex, hex, hex, hint, hintEnabled, hour, hue, image, image, image, imageMode, init, insertFrame, isRecording, join, join, keyPressed, keyReleased, keyReleased, keyTyped, keyTyped, lerp, lerpColor, lerpColor, lightFalloff, lights, lightSpecular, line, line, link, link, loadBytes, loadBytes, loadBytes, loadFont, loadImage, loadImage, loadImage, loadImage, loadImageIO, loadImageMT, loadImageTGA, loadPixels, loadShape, loadShape, loadStrings, loadStrings, loadStrings, log, loop, mag, mag, makeGraphics, map, mask, mask, match, matchAll, matrixMode, max, max, max, max, max, max, mergeShapes, method, millis, min, min, min, min, min, min, minute, modelX, modelY, modelZ, month, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mouseMoved, mousePressed, mouseReleased, nf, nf, nf, nf, nfc, nfc, nfc, nfc, nfp, nfp, nfp, nfp, nfs, nfs, nfs, nfs, noCursor, noFill, noise, noise, noise, noiseDetail, noiseDetail, noiseSeed, noLights, noLoop, norm, normal, noSmooth, noStroke, noTexture, noTint, open, open, openStream, ortho, ortho, ortho, paint, param, parseBoolean, parseBoolean, parseBoolean, parseBoolean, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseByte, parseChar, parseChar, parseChar, parseChar, parseFloat, parseFloat, parseFloat, parseFloat, parseFloat, parseFloat, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, parseInt, perspective, perspective, point, point, pointLight, popMatrix, popStyle, pow, print, print, print, print, print, print, print, printCamera, println, println, println, println, println, println, println, println, printMatrix, printProjection, pushMatrix, pushStyle, quad, quadVertex, quadVertex, radians, random, random, randomSeed, rect, rect, rect, rectMode, red, redraw, registerDispose, registerDraw, registerKeyEvent, registerMouseEvent, registerNoArgs, registerPost, registerPre, registerSize, registerWithArgs, removeCache, removeParams, requestImage, requestImage, requestImage, resetMatrix, resizeRenderer, reverse, reverse, reverse, reverse, reverse, reverse, reverse, rotate, rotate, rotateX, rotateY, rotateZ, round, run, runSketch, runSketch, runSketch, saturation, save, saveBytes, saveBytes, saveBytes, saveFile, saveFrame, saveFrame, savePath, saveStream, saveStream, saveStream, saveStream, saveStrings, saveStrings, saveStrings, scale, scale, scale, screenBlend, screenX, screenX, screenY, screenY, screenZ, second, selectFileImpl, selectFolder, selectFolder, selectInput, selectInput, selectOutput, selectOutput, set, set, setCache, setMatrix, setMatrix, setMatrix, setParams, setupExternalMessages, setupFrameResizeListener, shape, shape, shape, shapeMode, shapeName, shearX, shearY, shininess, shorten, shorten, shorten, shorten, shorten, shorten, shorten, showDepthWarning, showDepthWarningXYZ, showMethodWarning, showMissingWarning, showVariationWarning, sin, size, size, size, sketchFile, sketchHeight, sketchPath, sketchRenderer, sketchWidth, smooth, sort, sort, sort, sort, sort, sort, sort, sort, sort, sort, specular, specular, specular, sphere, sphereDetail, sphereDetail, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, splice, split, split, splitTokens, splitTokens, spotLight, sq, sqrt, start, status, stop, str, str, str, str, str, str, str, str, str, str, stroke, stroke, stroke, stroke, stroke, stroke, strokeCap, strokeJoin, strokeWeight, style, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, subset, tan, text, text, text, text, text, text, text, text, text, text, text, text, text, text, textAlign, textAlign, textAscent, textDescent, textFont, textFont, textLeading, textMode, textSize, texture, texture, textureBlend, textureMode, textWidth, textWidth, textWidth, thread, tint, tint, tint, tint, tint, tint, translate, translate, triangle, trim, trim, unbinary, unhex, unregisterDispose, unregisterDraw, unregisterKeyEvent, unregisterMouseEvent, unregisterNoArgs, unregisterPost, unregisterPre, unregisterSize, unregisterWithArgs, update, updatePixels, updatePixels, vertex, vertex, vertex, vertex, vertex, vertexFields, yearMethods inherited from class java.applet.Applet
getAccessibleContext, getAppletContext, getAppletInfo, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameter, getParameterInfo, isActive, isValidateRoot, newAudioClip, play, play, resize, resize, setStub, showStatusMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, reshape, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
xmin
protected double xmin -
xmax
protected double xmax -
ymin
protected double ymin -
ymax
protected double ymax -
boundaryThickness
double boundaryThickness -
backgroundColor
private int backgroundColor -
edgeColor
private int edgeColor -
edgeOpacity
private int edgeOpacity -
runAllIterations
public boolean runAllIterations -
selectedNode
node selected with mouse click (to show) -
current
public Jcg.geometry.Point_2 current -
layout
Layout algorithm -
inputGraph
input graph to draw -
sizeX
public static int sizeX -
sizeY
public static int sizeY -
a
Jcg.geometry.Point_2 a -
b
Jcg.geometry.Point_2 b
-
-
Constructor Details
-
SpringDrawing
public SpringDrawing()
-
-
Method Details
-
setup
public void setup()Initialize the frame- Overrides:
setupin classprocessing.core.PApplet
-
draw
public void draw()Main method for drawing the applet- Overrides:
drawin classprocessing.core.PApplet
-
keyPressed
public void keyPressed()Deal with keyboard events- Overrides:
keyPressedin classprocessing.core.PApplet
-
drawOptions
public void drawOptions() -
performOneIteration
public void performOneIteration() -
zoom
public void zoom(double factor) -
mouseClicked
public void mouseClicked()- Overrides:
mouseClickedin classprocessing.core.PApplet
-
mousePressed
public void mousePressed()- Overrides:
mousePressedin classprocessing.core.PApplet
-
mouseReleased
public void mouseReleased()- Overrides:
mouseReleasedin classprocessing.core.PApplet
-
mouseDragged
public void mouseDragged()- Overrides:
mouseDraggedin classprocessing.core.PApplet
-
update
protected void update(double x, double y) Update of the bounding box -
updateBoundingBox
public void updateBoundingBox()Update the range of the drawing region (defined by corners points 'a' and 'b') -
boundingBox
public double[] boundingBox()Return the current coordinates of the bounding box -
getPoint
public int[] getPoint(Jcg.geometry.Point_2 v) Return the integer coordinates of a pixel corresponding to a given point Warning: we must take care of the following parameters: -) the size of the canvas -) the size of bottom and left panels -) the negative direction of y-coordinates (in java drawing) -
drawSegment
public void drawSegment(Jcg.geometry.Point_2 u, Jcg.geometry.Point_2 v) Draw a gray edge (u, v) -
drawColoredSegment
public void drawColoredSegment(Jcg.geometry.Point_2 u, Jcg.geometry.Point_2 v, int r, int g, int b) Draw a colored edge (u, v) -
drawVertex
Draw a vertex u on the canvas -
drawVertexLabel
Draw a vertex label on the canvas (close to the node location) -
selectNode
Select the vertex whose 2d projection is the closest to pixel (i, j) -
display2D
public void display2D()Draw the skeleton of a graph in 2D using a Processing frame -
getVertexLabel
-
main
For running the PApplet as Java application
-