net.sf.jaxodraw.util
Class JaxoGeometry

java.lang.Object
  extended by net.sf.jaxodraw.util.JaxoGeometry

public final class JaxoGeometry
extends Object

Utility methods for Java2D geometry.

Since:
2.0

Method Summary
static void add(Rectangle2D r, Rectangle2D s)
          Add 's' to 'r', but respect isEmpty: is 's' is empty, do nothing; if 'r' is empty, 'r' is set to 's'.
static void add(Rectangle r, int x, int y, int width, int height)
          See add(Rectangle2D, Rectangle2D).
static double bezierLength(Point2D[] p, double error)
          Returns the approximate length of a Bezier curve.
static Point2D bezierPoint(Point2D[] p, double u)
          Returns a point of a Bezier curve at parameter u.
static double bezierSlope(Point2D[] p, double u)
          Returns the first derivative of a Bezier curve at parameter u.
static void bezierSplit(Point2D[] controlPoints, Point2D[] left, Point2D[] right)
          Splits a Bezier into half and calculates the control points of the two parts.
static void clear(Rectangle2D r)
          Clear: Ensure 'r.isEmpty()'.
static double curveParameter(double u)
          Checks that a curve parameter value is in range, within errors.
static Rectangle getBounds(Collection<?> objects)
          Bounding box of a Collection of Shapes.
static void grow(Dimension d, Insets n)
          Increase the Dimension 'd' by the amount given in each direction in 'n'.
static void grow(Rectangle r, Insets n)
          Increase the Rectangle 'r' by the amount given in each direction in 'n'.
static Point2D scaledPoint(double orx, double ory, double scale, double px, double py)
          Returns a point that is obtained from a point (px, py) after a scale transformation scale, keeping the point (orx, ory) fixed.
static void setLocationRelativeToAvoiding(Window w, Component comp, Rectangle avoidme)
          Put Window into a nice place - in principle as setLocationRelativeTo(c), but try to avoid covering the given Rectangle.
static void shrink(Dimension d, Insets n)
          Decrease the Dimension 'd' by the amount given in each direction in 'n'.
static void shrink(Rectangle r, Insets n)
          Decrease the Rectangle 'r' by the amount given in each direction in 'n'.
static void translate(Point2D p, double dx, double dy)
          Translate a point.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

add

public static void add(Rectangle2D r,
                       Rectangle2D s)
Add 's' to 'r', but respect isEmpty: is 's' is empty, do nothing; if 'r' is empty, 'r' is set to 's'. The rounding behaviour if 'r' and 's' have different precision is undefined.

Parameters:
r - The first Rectangle.
s - The rectangle to add.
See Also:
Rectangle.add(Rectangle), Rectangle.isEmpty()

add

public static void add(Rectangle r,
                       int x,
                       int y,
                       int width,
                       int height)
See add(Rectangle2D, Rectangle2D).

Parameters:
r - The first rectangle.
x - The x coordinate of the rectangle to add.
y - The y coordinate of the rectangle to add.
width - The width of the rectangle to add.
height - The height of the rectangle to add.

clear

public static void clear(Rectangle2D r)
Clear: Ensure 'r.isEmpty()'.

Parameters:
r - The rectangle to clear.
See Also:
Rectangle.isEmpty()

grow

public static void grow(Rectangle r,
                        Insets n)
Increase the Rectangle 'r' by the amount given in each direction in 'n'.

Parameters:
r - The rectangle to grow.
n - The insets to add.

shrink

public static void shrink(Rectangle r,
                          Insets n)
Decrease the Rectangle 'r' by the amount given in each direction in 'n'. Currently does not handle underflow - so 'r' may have negative width/height afterwards.

Parameters:
r - The rectangle to shrink.
n - The insets to subtract.

grow

public static void grow(Dimension d,
                        Insets n)
Increase the Dimension 'd' by the amount given in each direction in 'n'.

Parameters:
d - The dimension to grow.
n - The insets to add.

shrink

public static void shrink(Dimension d,
                          Insets n)
Decrease the Dimension 'd' by the amount given in each direction in 'n'. Currently does not handle underflow - so 'd' may have negative width/height afterwards.

Parameters:
d - The dimension to shrink.
n - The insets to subtract.

getBounds

public static Rectangle getBounds(Collection<?> objects)
Bounding box of a Collection of Shapes. Returns the union of all the object's bounding boxess.

Parameters:
objects - A collection of objects, only Shapes contribute to the result.
Returns:
A Rectangle containing the union bounding box. Returns null for an empty Collection, or if there are no Shapes.

scaledPoint

public static Point2D scaledPoint(double orx,
                                  double ory,
                                  double scale,
                                  double px,
                                  double py)
Returns a point that is obtained from a point (px, py) after a scale transformation scale, keeping the point (orx, ory) fixed.

Parameters:
orx - The x-coordinate of the fixed point.
ory - The y-coordinate of the fixed point.
scale - The scale factor.
px - The x-coordinate of the point to be transformed.
py - The y-coordinate of the point to be transformed.
Returns:
A Point2D containing the x- and y-coordinate of the new point.

bezierLength

public static double bezierLength(Point2D[] p,
                                  double error)
Returns the approximate length of a Bezier curve.

Parameters:
p - the four control points of the Bezier curve.
error - An absolute value for an error estimate
Returns:
The length of the Bezier curve.

bezierSplit

public static void bezierSplit(Point2D[] controlPoints,
                               Point2D[] left,
                               Point2D[] right)
Splits a Bezier into half and calculates the control points of the two parts.

Parameters:
controlPoints - the four control points of the Bezier.
left - (output) the four control points of the left half.
right - (output) the four control points of the right half.

bezierPoint

public static Point2D bezierPoint(Point2D[] p,
                                  double u)
Returns a point of a Bezier curve at parameter u.

Parameters:
p - the four control points of the Bezier curve.
u - the parameter value, needs to be between 0 and 1.
Returns:
A Point2D.

bezierSlope

public static double bezierSlope(Point2D[] p,
                                 double u)
Returns the first derivative of a Bezier curve at parameter u.

Parameters:
p - the four control points of the Bezier curve.
u - the parameter value, needs to be between 0 and 1.
Returns:
the slope (in radians) at t.

curveParameter

public static double curveParameter(double u)
Checks that a curve parameter value is in range, within errors.

Parameters:
u - the parameter value, needs to be between 0 and 1.
Returns:
a parameter that is strictly between 0 and 1.

translate

public static void translate(Point2D p,
                             double dx,
                             double dy)
Translate a point.

Parameters:
p - the point to move.
dx - the translation in x direction.
dy - the translation in y direction.

setLocationRelativeToAvoiding

public static void setLocationRelativeToAvoiding(Window w,
                                                 Component comp,
                                                 Rectangle avoidme)
Put Window into a nice place - in principle as setLocationRelativeTo(c), but try to avoid covering the given Rectangle.

Parameters:
w - The window to set.
comp - A compponent.
avoidme - The region to avoid.


Copyright © 2003-2011 The JaxoDraw team. All Rights Reserved.