Class DrawingUtilities


  • public class DrawingUtilities
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.awt.Stroke THICK_LINE  
      static java.awt.Stroke THIN_LINE  
      static double TWOPI  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static double angle​(double p1x, double p1y, double p2x, double p2y, double p3x, double p3y)
      Uses the Math.atan2 to calculate the angle created by the three points, where p1 is the vertex near the angle to be determined.
      static double angle​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2)
      Returns the angle off horizontal created by the line connecting p1 and p2
      static double angle​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2, java.awt.geom.Point2D p3)
      Uses the Math.atan2 to calculate the angle created by the three points, where p1 is the vertex near the angle to be determined.
      static java.awt.geom.Point2D asPercentage​(java.awt.geom.Point2D pt, java.awt.geom.Rectangle2D container, java.awt.geom.Point2D rv)  
      static java.awt.geom.Rectangle2D asPercentage​(java.awt.geom.Rectangle2D rect, java.awt.geom.Rectangle2D container, java.awt.geom.Rectangle2D rv)
      Calculates the position of rect inside container, returning the result as a rectangle where each value is a percentage of the container's size.
      static double bottom​(java.awt.geom.Rectangle2D rect)  
      static double bottom​(java.awt.geom.Rectangle2D rect, double dY)
      Returns the y-position of the bottom side of the rectangle after translating it by dY
      static java.awt.geom.Point2D centerPoint​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2)
      Find the center point on the line segment connecting the two points
      static java.awt.geom.Point2D centerPoint​(java.awt.geom.Rectangle2D rect)  
      static java.awt.Point centerPoint​(java.awt.Rectangle rect)  
      static java.awt.geom.Rectangle2D copy​(java.awt.geom.Rectangle2D rect)  
      static double dist​(double x1, double y1, double x2, double y2)
      Returns the distance between two points
      static float dist​(float x1, float y1, float x2, float y2)
      Returns the distance between two points
      static double dist​(java.awt.geom.Point2D a, java.awt.geom.Point2D b)
      Returns the distance between two points
      static double distSquared​(double x1, double y1, double x2, double y2)  
      static double distSquared​(java.awt.geom.Point2D a, java.awt.geom.Point2D b)  
      static double dot​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2)
      The dot-product of two vectors.
      static java.awt.Color fade​(java.awt.Color color, float alpha)  
      static java.awt.image.BufferedImage getScaledInstance​(java.awt.image.BufferedImage img, int targetWidth, int targetHeight, java.lang.Object hint, boolean higherQuality)
      Convenience method that returns a scaled instance of the provided BufferedImage.
      static java.awt.geom.Rectangle2D inset​(java.awt.geom.Rectangle2D rect, double d)
      Insets a rectangle by the given amount.
      static java.awt.Insets insets​(java.awt.Rectangle rect, java.awt.Insets insets)
      Converts a rectangle (x,y,w,h) into an insets that represents the coordinates of the rectangles edges (top=y, bottom=y+h, left=x, right=x+h)
      static Insets2D insets2D​(java.awt.geom.Rectangle2D rect, Insets2D insets)  
      static java.awt.geom.Point2D.Double location​(java.awt.geom.Rectangle2D rect)
      The location of the rectangle's x,y coords.
      static void makeRelative​(java.awt.geom.Rectangle2D child, java.awt.geom.Rectangle2D parent)
      For two rectangles in the same coordinate space, make the child relative to the parent.
      static void moveRect​(java.awt.geom.Rectangle2D rect, double dx, double dy)
      Moves a rectangle by an offset, like rect.x += dx; rect.y += dy;
      static boolean near​(double value, double nearTo)
      Detects double proximity within 1 millionth, since double equality is not reliable.
      static boolean near​(double value, double nearTo, double tolerance)
      Just like the other implementation of near, but with a custom specified tolerance.
      static boolean near​(float value, float nearTo)
      Detects double proximity within 1 millionth, since float equality is not reliable.
      static boolean near​(float value, float nearTo, float tolerance)
      Just like the other implementation of near, but with a custom specified tolerance.
      static boolean near​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2, double tolerance)
      Returns whether or not the two points' x and y coords are near each other within the specified tolerance.
      static boolean near​(java.awt.geom.Rectangle2D r1, java.awt.geom.Rectangle2D r2, double tolerance)
      Returns whether or not the rectangle's are near each other within the specified tolerance.
      static java.awt.geom.Point2D nearestPointInShape​(java.awt.Shape shape, java.awt.geom.Point2D pt)
      Finds the nearest point on or inside the given shape.
      static java.awt.geom.Point2D nearestPointOnLine​(double ax, double ay, double bx, double by, double px, double py, boolean clampToSegment, java.awt.geom.Point2D dest)
      Finds a point on the line that passes through A (ax,ay) and B(bx,by) that is nearest to the point P (px,py).
      static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a, java.awt.geom.Point2D b, java.awt.geom.Point2D p)  
      static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a, java.awt.geom.Point2D b, java.awt.geom.Point2D p, boolean clampToSegment)  
      static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a, java.awt.geom.Point2D b, java.awt.geom.Point2D p, java.awt.geom.Point2D dest)  
      static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a, java.awt.geom.Point2D b, java.awt.geom.Point2D p, java.awt.geom.Point2D dest, boolean clampToSegment)  
      static java.awt.geom.Rectangle2D outset​(java.awt.geom.Rectangle2D rect, double d)  
      static boolean pathsIntersect​(java.awt.Shape path1, java.awt.Shape path2)
      Detects if the outlines of two shapes intersect or not.
      static java.awt.geom.Point2D project​(java.awt.geom.Point2D pcts, java.awt.geom.Rectangle2D container, java.awt.geom.Point2D rv)  
      static java.awt.geom.Rectangle2D project​(java.awt.geom.Rectangle2D pcts, java.awt.geom.Rectangle2D container, java.awt.geom.Rectangle2D rv)
      Projects the rectangle of percentages into the container rectangle, storing the results in the rv
      static java.awt.geom.Rectangle2D rectangle​(Insets2D insets, java.awt.geom.Rectangle2D r)  
      static java.awt.Rectangle rectangle​(java.awt.Insets insets, java.awt.Rectangle r)
      Performs the inverse operation of insets(Rectangle, Insets).
      static boolean rectangleContains​(java.awt.geom.Rectangle2D rectangle, java.awt.Shape shape)  
      static boolean rectangleIntersects​(java.awt.geom.Rectangle2D rectangle, java.awt.Shape shape)  
      static java.awt.geom.Point2D reflect​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2, double mult)
      Consider the line segment p1,p2.
      static double right​(java.awt.geom.Rectangle2D rect)  
      static double right​(java.awt.geom.Rectangle2D rect, double dX)
      Returns the x-position of the right-hand side of the rectangle after translating it by dX
      static void rotate​(double angle, double anchorX, double anchorY, java.awt.geom.Point2D point)  
      static void rotate​(double angle, double anchorX, double anchorY, java.awt.geom.Point2D point, java.awt.geom.Point2D dest)  
      static void rotate​(double angle, java.awt.geom.Point2D anchor, java.awt.geom.Point2D point)
      Rotates the point around the anchor, storing the results by altering the point
      static void rotate​(double angle, java.awt.geom.Point2D anchor, java.awt.geom.Point2D point, java.awt.geom.Point2D dest)  
      static int round​(double d)
      Shortcut for (int)Math.round(d);
      static java.awt.Point round​(java.awt.geom.Point2D pt)  
      static java.awt.Rectangle round​(java.awt.geom.Rectangle2D rect)  
      static java.awt.Rectangle round​(java.awt.geom.Rectangle2D rect, java.awt.Rectangle rv)  
      static java.awt.Dimension roundSize​(java.awt.geom.Rectangle2D rect)  
      static void scale​(java.awt.geom.Point2D p, double d)
      Scales a point by a value.
      static java.awt.geom.Point2D scaleOnLine​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2, double value)
      Returns a point on the line that joins p1 and p2.
      static void setHeight​(java.awt.geom.Rectangle2D rect, double newHeight)  
      static void setLocation​(java.awt.geom.Rectangle2D rect, double x, double y)  
      static void setWidth​(java.awt.geom.Rectangle2D rect, double newWidth)  
      static void setX​(java.awt.geom.Rectangle2D rect, double newX)  
      static void setY​(java.awt.geom.Rectangle2D rect, double newY)  
      static java.util.List<java.awt.geom.Point2D> simplifyPath​(java.util.List<java.awt.geom.Point2D> points, float tolerance)
      Simplifies a basic poly-line to use fewer points
      static java.awt.geom.GeneralPath smoothPath​(java.util.List<java.awt.geom.Point2D> points, double smoothness)
      Turns a list of points representing a poly-line into a GeneralPath consisting of bezier curves.
      static java.awt.geom.GeneralPath smoothPath​(java.util.List<java.awt.geom.Point2D> points, double smoothness, boolean close)  
      static java.awt.geom.Point2D snapPointToAngle​(java.awt.geom.Point2D center, double angle, java.awt.geom.Point2D desired)
      Snaps a point to a nearby point that is on a line aligned to a multiple of the given angle from the centerpoint.
      static java.awt.geom.Point2D snapPointToAngle​(java.awt.geom.Point2D center, java.awt.geom.Point2D horizontalReference, double angle, java.awt.geom.Point2D desired)
      Snaps a point to a nearby point that is on a line aligned to a multiple of the given angle from the centerpoint.
      static double sq​(double d)
      Square (d^2)
      static java.awt.geom.Point2D subtract​(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2)  
      static java.awt.image.BufferedImage toBufferedImage​(java.awt.Image img)  
      static java.lang.String toString​(java.awt.geom.Rectangle2D rect)  
      static void union​(java.awt.Rectangle r1, java.awt.Rectangle r2, java.awt.Rectangle rv)
      Unions two rectangles, storing the result in rv, rather than creating a new rectangle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • THIN_LINE

        public static final java.awt.Stroke THIN_LINE
      • THICK_LINE

        public static final java.awt.Stroke THICK_LINE
    • Constructor Detail

      • DrawingUtilities

        public DrawingUtilities()
    • Method Detail

      • getScaledInstance

        public static java.awt.image.BufferedImage getScaledInstance​(java.awt.image.BufferedImage img,
                                                                     int targetWidth,
                                                                     int targetHeight,
                                                                     java.lang.Object hint,
                                                                     boolean higherQuality)
        Convenience method that returns a scaled instance of the provided BufferedImage. Implementation thanks to http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
        Parameters:
        img - the original image to be scaled
        targetWidth - the desired width of the scaled instance, in pixels
        targetHeight - the desired height of the scaled instance, in pixels
        hint - one of the rendering hints that corresponds to RenderingHints.KEY_INTERPOLATION (e.g. RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR, RenderingHints.VALUE_INTERPOLATION_BILINEAR, RenderingHints.VALUE_INTERPOLATION_BICUBIC)
        higherQuality - if true, this method will use a multi-step scaling technique that provides higher quality than the usual one-step technique (only useful in downscaling cases, where targetWidth or targetHeight is smaller than the original dimensions, and generally only when the BILINEAR hint is specified)
        Returns:
        a scaled version of the original BufferedImage
      • toBufferedImage

        public static java.awt.image.BufferedImage toBufferedImage​(java.awt.Image img)
      • dist

        public static double dist​(java.awt.geom.Point2D a,
                                  java.awt.geom.Point2D b)
        Returns the distance between two points
      • fade

        public static java.awt.Color fade​(java.awt.Color color,
                                          float alpha)
      • dist

        public static double dist​(double x1,
                                  double y1,
                                  double x2,
                                  double y2)
        Returns the distance between two points
      • dist

        public static float dist​(float x1,
                                 float y1,
                                 float x2,
                                 float y2)
        Returns the distance between two points
      • distSquared

        public static double distSquared​(java.awt.geom.Point2D a,
                                         java.awt.geom.Point2D b)
      • distSquared

        public static double distSquared​(double x1,
                                         double y1,
                                         double x2,
                                         double y2)
      • nearestPointOnLine

        public static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a,
                                                               java.awt.geom.Point2D b,
                                                               java.awt.geom.Point2D p)
      • nearestPointOnLine

        public static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a,
                                                               java.awt.geom.Point2D b,
                                                               java.awt.geom.Point2D p,
                                                               boolean clampToSegment)
      • nearestPointOnLine

        public static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a,
                                                               java.awt.geom.Point2D b,
                                                               java.awt.geom.Point2D p,
                                                               java.awt.geom.Point2D dest)
      • nearestPointOnLine

        public static java.awt.geom.Point2D nearestPointOnLine​(java.awt.geom.Point2D a,
                                                               java.awt.geom.Point2D b,
                                                               java.awt.geom.Point2D p,
                                                               java.awt.geom.Point2D dest,
                                                               boolean clampToSegment)
      • nearestPointInShape

        public static java.awt.geom.Point2D nearestPointInShape​(java.awt.Shape shape,
                                                                java.awt.geom.Point2D pt)
        Finds the nearest point on or inside the given shape. If the point is already in the shape, this simply sets dest to pt. If not, then it uses a flattening path iterator to find the line segment with with the closest point.
      • nearestPointOnLine

        public static java.awt.geom.Point2D nearestPointOnLine​(double ax,
                                                               double ay,
                                                               double bx,
                                                               double by,
                                                               double px,
                                                               double py,
                                                               boolean clampToSegment,
                                                               java.awt.geom.Point2D dest)
        Finds a point on the line that passes through A (ax,ay) and B(bx,by) that is nearest to the point P (px,py).
        Parameters:
        clampToSegment - true if you want the point to be on the segment between points A and B
      • sq

        public static double sq​(double d)
        Square (d^2)
      • inset

        public static java.awt.geom.Rectangle2D inset​(java.awt.geom.Rectangle2D rect,
                                                      double d)
        Insets a rectangle by the given amount. Alters the given rectangle in-place
      • outset

        public static java.awt.geom.Rectangle2D outset​(java.awt.geom.Rectangle2D rect,
                                                       double d)
      • right

        public static double right​(java.awt.geom.Rectangle2D rect)
      • right

        public static double right​(java.awt.geom.Rectangle2D rect,
                                   double dX)
        Returns the x-position of the right-hand side of the rectangle after translating it by dX
      • bottom

        public static double bottom​(java.awt.geom.Rectangle2D rect)
      • bottom

        public static double bottom​(java.awt.geom.Rectangle2D rect,
                                    double dY)
        Returns the y-position of the bottom side of the rectangle after translating it by dY
      • centerPoint

        public static java.awt.Point centerPoint​(java.awt.Rectangle rect)
      • centerPoint

        public static java.awt.geom.Point2D centerPoint​(java.awt.geom.Rectangle2D rect)
      • centerPoint

        public static java.awt.geom.Point2D centerPoint​(java.awt.geom.Point2D p1,
                                                        java.awt.geom.Point2D p2)
        Find the center point on the line segment connecting the two points
      • angle

        public static double angle​(java.awt.geom.Point2D p1,
                                   java.awt.geom.Point2D p2)
        Returns the angle off horizontal created by the line connecting p1 and p2
      • angle

        public static double angle​(java.awt.geom.Point2D p1,
                                   java.awt.geom.Point2D p2,
                                   java.awt.geom.Point2D p3)
        Uses the Math.atan2 to calculate the angle created by the three points, where p1 is the vertex near the angle to be determined.
      • angle

        public static double angle​(double p1x,
                                   double p1y,
                                   double p2x,
                                   double p2y,
                                   double p3x,
                                   double p3y)
        Uses the Math.atan2 to calculate the angle created by the three points, where p1 is the vertex near the angle to be determined.
      • subtract

        public static java.awt.geom.Point2D subtract​(java.awt.geom.Point2D p1,
                                                     java.awt.geom.Point2D p2)
      • dot

        public static double dot​(java.awt.geom.Point2D p1,
                                 java.awt.geom.Point2D p2)
        The dot-product of two vectors.
      • scale

        public static void scale​(java.awt.geom.Point2D p,
                                 double d)
        Scales a point by a value. simply multiplies the x and y location by the multiplier.
      • scaleOnLine

        public static java.awt.geom.Point2D scaleOnLine​(java.awt.geom.Point2D p1,
                                                        java.awt.geom.Point2D p2,
                                                        double value)
        Returns a point on the line that joins p1 and p2. If value is 0.0, this will return p1, if value is 1.0, this will return p2.
      • insets

        public static java.awt.Insets insets​(java.awt.Rectangle rect,
                                             java.awt.Insets insets)
        Converts a rectangle (x,y,w,h) into an insets that represents the coordinates of the rectangles edges (top=y, bottom=y+h, left=x, right=x+h)
        Parameters:
        rect - Must not be null.
        insets - May be null, in which case a new Insets wil be instantiated and returned.
      • insets2D

        public static Insets2D insets2D​(java.awt.geom.Rectangle2D rect,
                                        Insets2D insets)
      • rectangle

        public static java.awt.Rectangle rectangle​(java.awt.Insets insets,
                                                   java.awt.Rectangle r)
        Performs the inverse operation of insets(Rectangle, Insets). Converts an insets representing rectangle edges into a Rectangle. If the insets has been turned "inside out" (e.g. top > bottom) it will be corrected automatically.
      • rectangle

        public static java.awt.geom.Rectangle2D rectangle​(Insets2D insets,
                                                          java.awt.geom.Rectangle2D r)
      • copy

        public static java.awt.geom.Rectangle2D copy​(java.awt.geom.Rectangle2D rect)
      • makeRelative

        public static void makeRelative​(java.awt.geom.Rectangle2D child,
                                        java.awt.geom.Rectangle2D parent)
        For two rectangles in the same coordinate space, make the child relative to the parent. Like:

         child.x -= parent.x;
         child.y -= parent.y;
         
      • setX

        public static void setX​(java.awt.geom.Rectangle2D rect,
                                double newX)
      • setY

        public static void setY​(java.awt.geom.Rectangle2D rect,
                                double newY)
      • setWidth

        public static void setWidth​(java.awt.geom.Rectangle2D rect,
                                    double newWidth)
      • setHeight

        public static void setHeight​(java.awt.geom.Rectangle2D rect,
                                     double newHeight)
      • toString

        public static java.lang.String toString​(java.awt.geom.Rectangle2D rect)
      • moveRect

        public static void moveRect​(java.awt.geom.Rectangle2D rect,
                                    double dx,
                                    double dy)
        Moves a rectangle by an offset, like rect.x += dx; rect.y += dy;
      • location

        public static java.awt.geom.Point2D.Double location​(java.awt.geom.Rectangle2D rect)
        The location of the rectangle's x,y coords.
      • setLocation

        public static void setLocation​(java.awt.geom.Rectangle2D rect,
                                       double x,
                                       double y)
      • pathsIntersect

        public static boolean pathsIntersect​(java.awt.Shape path1,
                                             java.awt.Shape path2)
        Detects if the outlines of two shapes intersect or not.
      • rectangleContains

        public static boolean rectangleContains​(java.awt.geom.Rectangle2D rectangle,
                                                java.awt.Shape shape)
      • rectangleIntersects

        public static boolean rectangleIntersects​(java.awt.geom.Rectangle2D rectangle,
                                                  java.awt.Shape shape)
      • union

        public static void union​(java.awt.Rectangle r1,
                                 java.awt.Rectangle r2,
                                 java.awt.Rectangle rv)
        Unions two rectangles, storing the result in rv, rather than creating a new rectangle
      • snapPointToAngle

        public static java.awt.geom.Point2D snapPointToAngle​(java.awt.geom.Point2D center,
                                                             double angle,
                                                             java.awt.geom.Point2D desired)
        Snaps a point to a nearby point that is on a line aligned to a multiple of the given angle from the centerpoint.
      • snapPointToAngle

        public static java.awt.geom.Point2D snapPointToAngle​(java.awt.geom.Point2D center,
                                                             java.awt.geom.Point2D horizontalReference,
                                                             double angle,
                                                             java.awt.geom.Point2D desired)
        Snaps a point to a nearby point that is on a line aligned to a multiple of the given angle from the centerpoint.
      • near

        public static boolean near​(double value,
                                   double nearTo)
        Detects double proximity within 1 millionth, since double equality is not reliable. Implementation is:

         Math.abs(nearTo - value) < 0.000001d
         
      • near

        public static boolean near​(double value,
                                   double nearTo,
                                   double tolerance)
        Just like the other implementation of near, but with a custom specified tolerance.
      • near

        public static boolean near​(float value,
                                   float nearTo)
        Detects double proximity within 1 millionth, since float equality is not reliable. Implementation is:

         Math.abs(nearTo - value) < 0.000001f
         
      • near

        public static boolean near​(float value,
                                   float nearTo,
                                   float tolerance)
        Just like the other implementation of near, but with a custom specified tolerance.
      • near

        public static boolean near​(java.awt.geom.Point2D p1,
                                   java.awt.geom.Point2D p2,
                                   double tolerance)
        Returns whether or not the two points' x and y coords are near each other within the specified tolerance.
      • near

        public static boolean near​(java.awt.geom.Rectangle2D r1,
                                   java.awt.geom.Rectangle2D r2,
                                   double tolerance)
        Returns whether or not the rectangle's are near each other within the specified tolerance.
      • round

        public static java.awt.Rectangle round​(java.awt.geom.Rectangle2D rect)
      • round

        public static java.awt.Rectangle round​(java.awt.geom.Rectangle2D rect,
                                               java.awt.Rectangle rv)
      • round

        public static int round​(double d)
        Shortcut for (int)Math.round(d);
      • roundSize

        public static java.awt.Dimension roundSize​(java.awt.geom.Rectangle2D rect)
      • round

        public static java.awt.Point round​(java.awt.geom.Point2D pt)
      • asPercentage

        public static java.awt.geom.Rectangle2D asPercentage​(java.awt.geom.Rectangle2D rect,
                                                             java.awt.geom.Rectangle2D container,
                                                             java.awt.geom.Rectangle2D rv)
        Calculates the position of rect inside container, returning the result as a rectangle where each value is a percentage of the container's size. You can re-create rect by calling #project(Rectangle2D, Rectangle2D, Rectangle) with the return value of this function.
        Parameters:
        rect - The rectangle in question
        container - The reference rectangle containing rect
        rv - The return value in which to store the result. May be null.
      • asPercentage

        public static java.awt.geom.Point2D asPercentage​(java.awt.geom.Point2D pt,
                                                         java.awt.geom.Rectangle2D container,
                                                         java.awt.geom.Point2D rv)
      • project

        public static java.awt.geom.Rectangle2D project​(java.awt.geom.Rectangle2D pcts,
                                                        java.awt.geom.Rectangle2D container,
                                                        java.awt.geom.Rectangle2D rv)
        Projects the rectangle of percentages into the container rectangle, storing the results in the rv
      • project

        public static java.awt.geom.Point2D project​(java.awt.geom.Point2D pcts,
                                                    java.awt.geom.Rectangle2D container,
                                                    java.awt.geom.Point2D rv)
      • rotate

        public static void rotate​(double angle,
                                  double anchorX,
                                  double anchorY,
                                  java.awt.geom.Point2D point)
      • rotate

        public static void rotate​(double angle,
                                  java.awt.geom.Point2D anchor,
                                  java.awt.geom.Point2D point)
        Rotates the point around the anchor, storing the results by altering the point
      • rotate

        public static void rotate​(double angle,
                                  java.awt.geom.Point2D anchor,
                                  java.awt.geom.Point2D point,
                                  java.awt.geom.Point2D dest)
      • rotate

        public static void rotate​(double angle,
                                  double anchorX,
                                  double anchorY,
                                  java.awt.geom.Point2D point,
                                  java.awt.geom.Point2D dest)
      • simplifyPath

        public static java.util.List<java.awt.geom.Point2D> simplifyPath​(java.util.List<java.awt.geom.Point2D> points,
                                                                         float tolerance)
        Simplifies a basic poly-line to use fewer points
        Parameters:
        points - The list of points that make up the line
        tolerance - The tolerance of how "simple" to make the line. Zero means no simplification. A value in the high tens will simplify quite a bit.
      • reflect

        public static java.awt.geom.Point2D reflect​(java.awt.geom.Point2D p1,
                                                    java.awt.geom.Point2D p2,
                                                    double mult)
        Consider the line segment p1,p2. This will return a homothetical point on the reflected segment. A multiplier of 1.0 will return the symmetrical point.
      • smoothPath

        public static java.awt.geom.GeneralPath smoothPath​(java.util.List<java.awt.geom.Point2D> points,
                                                           double smoothness)
        Turns a list of points representing a poly-line into a GeneralPath consisting of bezier curves. Thanks to http://www.efg2.com/Lab/Graphics/Jean-YvesQueinecBezierCurves.htm
        Parameters:
        smoothness - A double from zero to 1.5. Zero will make straight segments, higher numbers will make a curvier path.
      • smoothPath

        public static java.awt.geom.GeneralPath smoothPath​(java.util.List<java.awt.geom.Point2D> points,
                                                           double smoothness,
                                                           boolean close)