Class Graphs.PolarGrid

java.lang.Object
org.bzdev.graphs.Graphs.PolarGrid
All Implemented Interfaces:
Graph.Graphic
Enclosing class:
Graphs

public static class Graphs.PolarGrid extends Object implements Graph.Graphic
Class to create a series of lines and circles representing polar coordinates. The caller may specify a line color, a line width, an origin specified as either a point in graph coordinate space or a fractional position on the graph, the angular separation in degrees between radial lines, the radial separation between circles.

To improve the visual appearance, if radial lines near the origin would intersect due to their line thickness, the angular separation will be increased near the origin. For this to be possible the product of the angular separation in degrees with 2, 3, or 5 must be a divisor of 90 degrees. The angular separation in degrees is restricted to integer values.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Color
    The default line color for a polar-coordinate grid.
    static final String
    The default line color for a polar-coordinate grid, provided as a CSS specification.
    static final double
    The default stroke width for a polar-coordinate grid.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
    PolarGrid(double radialSpacing, int angularSpacing)
    Constructor specifying a radial spacing and an angular spacing.
    PolarGrid(double radialSpacing, int angularSpacing, double xo, double yo, boolean fractional)
    Constructor specifying a radial spacing and an angular spacing.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addTo(Graph g, Graphics2D g2d, Graphics2D g2dGCS)
    Add this object to a graph.
    int
    Get the angular spacing.
    Get the color used to draw lines representing polar coordinates.
    double
    Get the radial spacing.
    double
    Get the stroke width for lines drawn to represent polar coordinates.
    double
    Get the X origin for polar coordinates.
    double
    Get the Y origin for polar coordinates.
    boolean
    Determine if the origin is located by its absolute position.
    boolean
    Determine if the origin is located by its fractional position.
    void
    setAngularSpacing(int spacing)
    Set the angular spacing between radial lines used to represent polar coordinates.
    void
    setColor(Color lineColor)
    Set the color used to draw lines representing polar coordinates.
    void
    setOrigin(double xo, double yo, boolean fractional)
    Set the origin for polar coordinates.
    void
    setRadialSpacing(double spacing)
    Set the radial spacing for the circles used to represent polar coordinates.
    void
    setStrokeWidth(double width)
    Set the stroke width for lines drawn to represent polar coordinates.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.bzdev.graphs.Graph.Graphic

    boundingBox
  • Field Details

    • LINE_COLOR_CSS

      public static final String LINE_COLOR_CSS
      The default line color for a polar-coordinate grid, provided as a CSS specification.
      See Also:
    • LINE_COLOR

      public static final Color LINE_COLOR
      The default line color for a polar-coordinate grid.
    • STROKE_WIDTH

      public static final double STROKE_WIDTH
      The default stroke width for a polar-coordinate grid.
      See Also:
  • Constructor Details

    • PolarGrid

      public PolarGrid()
      Constructor.
    • PolarGrid

      public PolarGrid(double radialSpacing, int angularSpacing)
      Constructor specifying a radial spacing and an angular spacing.
      Parameters:
      radialSpacing - the radial spacing in GCS units.
      angularSpacing - the angle in degrees
    • PolarGrid

      public PolarGrid(double radialSpacing, int angularSpacing, double xo, double yo, boolean fractional)
      Constructor specifying a radial spacing and an angular spacing.
      Parameters:
      radialSpacing - the radial spacing in GCS units.
      angularSpacing - the angle in degrees
      xo - a fraction in the range [0,1] giving the X coordinate of the origin as a fraction of the value between graph.getXLower() and garph.getXUpper() when the argument fractional is true; the X coordinate in GCS units when the argument fractional is false
      yo - a fraction in the range [0,1] giving the Y coordinate of the origin as a fraction of the value between graph.getXLower() and garph.getXUpper() when the argument fractional is true; the X coordinate in GCS units when the argument fractional is false
      fractional - true if fractional units are used; false if absolute units are used
  • Method Details

    • getRadialSpacing

      public double getRadialSpacing()
      Get the radial spacing. The radial spacing is the spacing between concentric circles drawn to show polar coordinates.
      Returns:
      the radial spacing in GCS (Graph Coordinate Space) units; 0.0 indicates the default behavior
    • getAngularSpacing

      public int getAngularSpacing()
      Get the angular spacing. The angular spacing is the spacing between adjacent radial lines drawn to show polar coordinates.
      Returns:
      the angular spacing in degrees.
    • hasFractionalOrigin

      public boolean hasFractionalOrigin()
      Determine if the origin is located by its fractional position. When true, getXOrigin() will return a fraction f such that the X origin is located at graph.getXLower()*(1.0-f) + graph.getXUpper()*f and getYOrigin() will return a faction f such that the Y origin is located at graph.getXLower()*(1.0-f) + graph.getXUpper()*f. When false, the x and y GCS (Graph Coordinate Space) coordinates of the origin are the values returned by getXOrigin() and getYOrigin() respectively.
      Returns:
      true if the origin's location is specified by its fractional position in the graph; false if the origin is located by its absolute position using GCS coordinates.
      See Also:
    • hasAbsoluteOrigin

      public boolean hasAbsoluteOrigin()
      Determine if the origin is located by its absolute position. When true, the x and y GCS (Graph Coordinate Space) coordinates of the origin are the values returned by getXOrigin() and getXOrigin() respectively. When false, getXOrigin() will return a fraction f such that the X origin on a graph is located at graph.getXLower()*(1.0-f) + graph.getXUpper()*f and getYOrigin() will return a faction f such that the Y origin is located at graph.getXLower()*(1.0-f) + graph.getXUpper()*f.
      Returns:
      true if the origin is located by its absolute position using GCS coordinates; false if the origin's location is specified by its fractional position in the graph
      See Also:
    • getXOrigin

      public double getXOrigin()
      Get the X origin for polar coordinates. The interpretation of the value returned depends on the value returned by hasFractionalOrigin() or hasAbsoluteOrigin(). When hasFractionalOrigin() returns true, the value returned is the fraction f such that the X origin on a graph is located at graph.getXLower()*(1.0-f) + graph.getXUpper()*f in graph coordinate space units. When hasAbsoluteOrigin() returns true, the value returned is the X coordinate of the origin in GCS units.
      Returns:
      the X origin.
    • getYOrigin

      public double getYOrigin()
      Get the Y origin for polar coordinates. The interpretation of the value returned depends on the value returned by hasFractionalOrigin() or hasAbsoluteOrigin(). When hasFractionalOrigin() returns true, the value returned is the fraction f such that the Y origin on a graph is located at graph.getYLower()*(1.0-f) + graph.getYUpper()*f in graph coordinate space units. When hasAbsoluteOrigin() returns true, the value returned is the Y coordinate of the origin in GCS units.
      Returns:
      the Y origin.
    • getColor

      public Color getColor()
      Get the color used to draw lines representing polar coordinates.
      Returns:
      the line color
    • getStrokeWidth

      public double getStrokeWidth()
      Get the stroke width for lines drawn to represent polar coordinates.
      Returns:
      the line width.
    • setOrigin

      public void setOrigin(double xo, double yo, boolean fractional)
      Set the origin for polar coordinates. When fractional units are used, xo is a fraction f such that the X origin is located at graph.getXLower()*(1.0-f) + graph.getXUpper()*f and yo is a fraction f such that the Y origin is located at graph.getYLower()*(1.0-f) + graph.getYUpper()*f. When absolute units are used, (xo, yo) is the location of the polar coordinate system's origin in GCS.
      Parameters:
      xo - a fraction in the range [0,1] giving the X coordinate of the origin as a fraction of the value between graph.getXLower() and garph.getXUpper() when the argument fractional is true; the X coordinate in GCS units when the argument fractional is false
      yo - a fraction in the range [0,1] giving the Y coordinate of the origin as a fraction of the value between graph.getXLower() and garph.getXUpper() when the argument fractional is true; the X coordinate in GCS units when the argument fractional is false
      fractional - true if fractional units are used; false if absolute units are used
    • setColor

      public void setColor(Color lineColor)
      Set the color used to draw lines representing polar coordinates.
      Parameters:
      lineColor - the line color; null for a default
    • setStrokeWidth

      public void setStrokeWidth(double width)
      Set the stroke width for lines drawn to represent polar coordinates.
      Parameters:
      width - the stroke width; 0.0 or negative for a default
    • setRadialSpacing

      public void setRadialSpacing(double spacing)
      Set the radial spacing for the circles used to represent polar coordinates.
      Parameters:
      spacing - the radial spacing in GCS units; 0.0 or negative for the default behavior
    • setAngularSpacing

      public void setAngularSpacing(int spacing)
      Set the angular spacing between radial lines used to represent polar coordinates. This value, when multiplied by 2, 3, or 5, should be a divisor of 90.
      Parameters:
      spacing - the angle in degrees
    • addTo

      public void addTo(Graph g, Graphics2D g2d, Graphics2D g2dGCS)
      Description copied from interface: Graph.Graphic
      Add this object to a graph. The drawing operation is assumed to be a complex one that might involve fills, etc.

      Any modifications to g2d or g2dGCS made by an implementation of this method should be undone before this method returns. For classes provided by the org.bzdev.anim2d package, such modifications must be undone before this method returns.

      Two graphics contexts are provided as arguments. g2d will typically be used as the first argument to the graph's draw or fill methods. In this case, the shape of an object is described in graph coordinate space but the widths of strokes drawn by fill operations, gradient paint, etc., have user-space units. The result is that line widths as they appear in an image are not sensitive to the mapping from graph coordinate space to user space. One should use the draw and fill methods specified by Graph, using g2d as their first argument. By contrast, if a line width, etc., should be in graph-coordinate space units, one can use the g2dGCS argument directly. This will rarely be done when plotting a graph but is useful in animations.

      Specified by:
      addTo in interface Graph.Graphic
      Parameters:
      g - the graph on which this object should be drawn
      g2d - the user-space Graphics2D to use to draw the Graphic
      g2dGCS - the graph-coordinate space Graphics2D to use to draw the Graphic