Class Convex3DGraph

All Implemented Interfaces:
ComponentListener, MouseListener, MouseMotionListener, MouseWheelListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible

public class Convex3DGraph extends JabaGraph implements ComponentListener, MouseListener, MouseMotionListener, MouseWheelListener
This is a panel which draws the Convex Hull diagram, given the pre-computed set of faces.
Author:
Andrea Zoppi, Sebastiano Spicuglia
See Also:
  • Field Details

    • FONT

      protected static final Font FONT
    • serialVersionUID

      protected static final long serialVersionUID
      See Also:
    • prj

      protected ScreenProjector prj
    • BGCOLOR

      protected static final Color BGCOLOR
    • mainWin

      protected JabaController mainWin
    • enableCustomZoom

      protected boolean enableCustomZoom
    • enableDebugInfo

      protected boolean enableDebugInfo
    • enableDebugEdges

      protected boolean enableDebugEdges
    • enableCoplanarEdges

      protected boolean enableCoplanarEdges
    • enableInternalVertices

      protected boolean enableInternalVertices
    • enableVisibleEdges

      protected boolean enableVisibleEdges
    • enableHiddenEdges

      protected boolean enableHiddenEdges
    • enableVisibleFaces

      protected boolean enableVisibleFaces
    • enableHiddenFaces

      protected boolean enableHiddenFaces
    • enableHullVerticesLabels

      protected boolean enableHullVerticesLabels
    • enableTransparentFaces

      protected boolean enableTransparentFaces
    • axisPrjX

      protected Vector4 axisPrjX
    • axisPrjY

      protected Vector4 axisPrjY
    • axisPrjZ

      protected Vector4 axisPrjZ
    • axisLabelX

      protected Vector4 axisLabelX
    • axisLabelY

      protected Vector4 axisLabelY
    • axisLabelZ

      protected Vector4 axisLabelZ
    • originPrj

      protected Vector4 originPrj
    • forward

      protected Vector4 forward
    • screenW

      protected float screenW
    • screenH

      protected float screenH
    • halfW

      protected float halfW
    • halfH

      protected float halfH
    • aspect

      protected float aspect
    • rotY

      protected float rotY
    • rotX

      protected float rotX
    • rotYdelta

      protected float rotYdelta
    • rotXdelta

      protected float rotXdelta
    • zoomFactor

      protected float zoomFactor
    • mouseLeft

      protected boolean mouseLeft
    • mouseRight

      protected boolean mouseRight
    • mouseStart

      protected Point mouseStart
    • mouseEnd

      protected Point mouseEnd
    • mouseDelta

      protected Point mouseDelta
    • mouseMode

      protected Convex3DGraph.MouseMode mouseMode
    • VISIBILITY_EPSILON

      protected static final float VISIBILITY_EPSILON
      See Also:
    • COPLANAR_EPSILON

      protected static final float COPLANAR_EPSILON
      See Also:
    • allVerticesSet

      protected HashSet<HullVertex> allVerticesSet
    • allVerticesArray

      protected HullVertex[] allVerticesArray
    • faces

      protected ArrayList<HullFace> faces
    • hullEdgesSet

      protected HashSet<HullEdge> hullEdgesSet
    • hullVerticesSet

      protected HashSet<Convex3DGraph.PointData> hullVerticesSet
    • visibleFacesSet

      protected HashSet<HullFace> visibleFacesSet
    • hiddenFacesSet

      protected HashSet<HullFace> hiddenFacesSet
    • visibleEdgesSet

      protected HashSet<HullEdge> visibleEdgesSet
    • hiddenEdgesSet

      protected HashSet<HullEdge> hiddenEdgesSet
    • visibleVerticesSet

      protected HashSet<Convex3DGraph.PointData> visibleVerticesSet
    • hiddenVerticesSet

      protected HashSet<Convex3DGraph.PointData> hiddenVerticesSet
    • verticesInsideSet

      protected HashSet<Convex3DGraph.PointData> verticesInsideSet
    • hullEdgesArray

      protected HullEdge[] hullEdgesArray
    • hullVerticesArray

      protected Convex3DGraph.PointData[] hullVerticesArray
    • hullFacesArray

      protected HullFace[] hullFacesArray
    • visibleFacesArray

      protected HullFace[] visibleFacesArray
    • hiddenFacesArray

      protected HullFace[] hiddenFacesArray
    • visibleEdgesArray

      protected HullEdge[] visibleEdgesArray
    • hiddenEdgesArray

      protected HullEdge[] hiddenEdgesArray
    • visibleVerticesArray

      protected Convex3DGraph.PointData[] visibleVerticesArray
    • hiddenVerticesArray

      protected Convex3DGraph.PointData[] hiddenVerticesArray
    • verticesInsideArray

      protected Convex3DGraph.PointData[] verticesInsideArray
    • sortedVisibleVertices

      protected Convex3DGraph.PointData[] sortedVisibleVertices
    • sortedHiddenVertices

      protected Convex3DGraph.PointData[] sortedHiddenVertices
    • sortedVerticesInside

      protected Convex3DGraph.PointData[] sortedVerticesInside
    • maxVertexDistance

      protected float maxVertexDistance
    • centroid

      protected Vector4 centroid
    • eyeRT

      protected Matrix4 eyeRT
  • Constructor Details

  • Method Details

    • getEnableDebugInfo

      public boolean getEnableDebugInfo()
    • setEnableDebugInfo

      public void setEnableDebugInfo(boolean enableDebugInfo)
    • getEnableDebugEdges

      public boolean getEnableDebugEdges()
    • setEnableDebugEdges

      public void setEnableDebugEdges(boolean enableDebugEdges)
    • getEnableCustomZoom

      public boolean getEnableCustomZoom()
    • setEnableCustomZoom

      public void setEnableCustomZoom(boolean enableCustomZoom)
    • getEnableInternalVertices

      public boolean getEnableInternalVertices()
    • setEnableInternalVertices

      public void setEnableInternalVertices(boolean enableInternalVertices)
    • getEnableCoplanarEdges

      public boolean getEnableCoplanarEdges()
    • setEnableCoplanarEdges

      public void setEnableCoplanarEdges(boolean enableCoplanarEdges)
    • getEnableVisibleEdges

      public boolean getEnableVisibleEdges()
    • setEnableVisibleEdges

      public void setEnableVisibleEdges(boolean enableVisibleEdges)
    • getEnableHiddenEdges

      public boolean getEnableHiddenEdges()
    • setEnableHiddenEdges

      public void setEnableHiddenEdges(boolean enableHiddenEdges)
    • getEnableVisibleFaces

      public boolean getEnableVisibleFaces()
    • setEnableVisibleFaces

      public void setEnableVisibleFaces(boolean enableVisibleFaces)
    • getEnableHiddenFaces

      public boolean getEnableHiddenFaces()
    • setEnableHiddenFaces

      public void setEnableHiddenFaces(boolean enableHiddenFaces)
    • getEnableHullVerticesLabels

      public boolean getEnableHullVerticesLabels()
    • setEnableHullVerticesLabels

      public void setEnableHullVerticesLabels(boolean enableHullVerticesLabels)
    • getEnableTransparentFaces

      public boolean getEnableTransparentFaces()
    • setEnableTransparentFaces

      public void setEnableTransparentFaces(boolean enableTransparentFaces)
    • getZoomFactor

      public float getZoomFactor()
    • setZoomFactor

      public void setZoomFactor(float zoomFactor)
    • splitByVisibility

      protected void splitByVisibility(Vector4 forward)
      Check if the face is visible or not. Due to the convex solid property, a positive dot product means that the face has the normal in the same direction of the sight, thus it is not visible because there exist faces which cover the sight of the analyzed one.
      Parameters:
      forward - Viewing direction.
    • countFaceVertices

      protected void countFaceVertices()
    • incrementFaceCounter

      protected void incrementFaceCounter(HullFace face)
    • paint

      public void paint(Graphics graphics)
      Overrides:
      paint in class JabaGraph
    • drawAxes

      protected void drawAxes(Graphics2D g, boolean visible)
    • drawBorderString

      protected void drawBorderString(Graphics2D g, String s, int x, int y, Color textColor, Color borderColor)
    • drawGrids

      protected void drawGrids(Graphics2D g, float size, int numSegments, boolean xEnable, boolean yEnable, boolean zEnable)
    • drawFace

    • drawEdge

      protected void drawEdge(Graphics2D g, Convex3DGraph.PointData p1, Convex3DGraph.PointData p2, HullEdge edge, boolean visible)
    • drawVertex

      protected void drawVertex(Graphics2D g, Convex3DGraph.PointData p, boolean visible, boolean onHull)
    • floatString

      protected static String floatString(float value, int decimals)
      Formats a floating point value with the specified number of decimals.
      Parameters:
      value - Value to convert into string.
      decimals - Number of decimals.
      Returns:
    • printMatrix4

      protected int printMatrix4(Graphics2D g, Matrix4 m, int x, int y, String name)
      Prints matrix coefficients in a human-readable manner.
      Parameters:
      g - Graphics context.
      m - Matrix to print.
      x - Left coordinate.
      y - Top coordinate.
      name - Displayed matrix name.
      Returns:
      The new Y coordinate after printing text lines.
    • printViewState

      protected void printViewState(Graphics2D g)
      Prints useful internal data, such as rotation angles and transform matrices.
      Parameters:
      g - Graphics context.
    • clamp

      protected static float clamp(float min, float value, float max)
      Keeps a value within bounds.
      Parameters:
      min - Minimum value.
      value - Value to check.
      max - Maximum value.
      Returns:
      The clamped value.
    • getScreenProjector

      public ScreenProjector getScreenProjector()
      Returns:
      The internal ScreenProjector instance.
    • updateProjection

      public void updateProjection()
      Projects 3D points onto the screen and repaints the diagram.
    • componentHidden

      public void componentHidden(ComponentEvent evt)
      Specified by:
      componentHidden in interface ComponentListener
    • componentMoved

      public void componentMoved(ComponentEvent evt)
      Specified by:
      componentMoved in interface ComponentListener
    • componentResized

      public void componentResized(ComponentEvent evt)
      Specified by:
      componentResized in interface ComponentListener
    • componentShown

      public void componentShown(ComponentEvent evt)
      Specified by:
      componentShown in interface ComponentListener
    • mouseClicked

      public void mouseClicked(MouseEvent evt)
      Specified by:
      mouseClicked in interface MouseListener
    • mouseEntered

      public void mouseEntered(MouseEvent evt)
      Specified by:
      mouseEntered in interface MouseListener
    • mouseExited

      public void mouseExited(MouseEvent evt)
      Specified by:
      mouseExited in interface MouseListener
    • mousePressed

      public void mousePressed(MouseEvent evt)
      Specified by:
      mousePressed in interface MouseListener
    • mouseReleased

      public void mouseReleased(MouseEvent evt)
      Specified by:
      mouseReleased in interface MouseListener
    • mouseDragged

      public void mouseDragged(MouseEvent evt)
      Specified by:
      mouseDragged in interface MouseMotionListener
    • mouseMoved

      public void mouseMoved(MouseEvent evt)
      Specified by:
      mouseMoved in interface MouseMotionListener
    • handleMovements

      protected void handleMovements(MouseEvent evt)
    • selectStation

      public void selectStation(String name)
    • mouseWheelMoved

      public void mouseWheelMoved(MouseWheelEvent evt)
      Specified by:
      mouseWheelMoved in interface MouseWheelListener