public class Math2D
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static java.awt.geom.AffineTransform |
IDENTITY_TRANSFORM
Holds an instance of an Identity AffineTransform.
|
static double |
TINY
A very small number, currently 1.0E-10.
|
static java.awt.geom.Point2D |
ZERO
The origin (0.0, 0.0).
|
Constructor and Description |
---|
Math2D() |
Modifier and Type | Method and Description |
---|---|
static java.awt.geom.Point2D |
add(java.awt.geom.Point2D[] points)
Computes the vector total of all of the points in the given array.
|
static java.awt.geom.Point2D |
add(java.awt.geom.Point2D first,
java.awt.geom.Point2D second) |
static double |
bearingFrom(java.awt.geom.Point2D point,
java.awt.geom.Point2D toPoint)
Returns the angle in degrees to go from point to toPoint.
|
static java.util.Set<java.awt.geom.Point2D> |
eliminateDuplicates(java.util.List<java.awt.geom.Point2D> intersections,
double tolerance) |
static java.awt.geom.Point2D[] |
findIntersection(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.geom.CubicCurve2D curve) |
static java.awt.geom.Point2D[] |
findIntersection(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.geom.Ellipse2D ellipse) |
static java.awt.geom.Point2D[] |
findIntersection(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.geom.Line2D line) |
static java.awt.geom.Point2D[] |
findIntersection(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.geom.QuadCurve2D curve) |
static java.awt.geom.Point2D[] |
findIntersection(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.Shape shape) |
static java.awt.geom.Point2D[] |
findIntersection(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.Shape shape,
java.awt.geom.AffineTransform trans) |
static double[] |
findIntersectionTime(java.awt.geom.Point2D start,
java.awt.geom.Point2D velocity,
java.awt.Shape shape)
This is the main way that sensors determine when the next time a contact
will enter or exit the sensor's footprint.
|
static java.awt.geom.Point2D |
getCenter(java.awt.geom.RectangularShape shape) |
static java.awt.geom.Point2D[] |
getCoefficients(java.awt.geom.CubicCurve2D cubicCurve) |
static java.awt.geom.Point2D[] |
getCoefficients(java.awt.geom.Line2D line) |
static java.awt.geom.Point2D[] |
getCoefficients(java.awt.geom.QuadCurve2D quadCurve) |
static java.awt.geom.Point2D |
getIntercept(Mover pursuer,
double speed,
double range,
Mover target)
Computes the point at which the pursuer is within the given range of the
target.
|
static java.awt.geom.Point2D |
getIntercept(Mover pursuer,
double speed,
Mover target)
Computes the Point2D at which the pursuer will intersect the target when
the pursuer moves at the given speed.
|
static java.awt.geom.Point2D |
getIntercept(Mover pursuer,
Mover target)
Computes the intersection point when the pursuer goes at maximum speed.
|
static java.awt.geom.Point2D |
getIntercept(java.awt.geom.Point2D startingLocation,
double speed,
double range,
java.awt.geom.Point2D targetLocation,
java.awt.geom.Point2D targetVelocity) |
static java.awt.geom.Point2D |
getIntercept(java.awt.geom.Point2D startingLocation,
double speed,
java.awt.geom.Point2D targetLocation,
java.awt.geom.Point2D targetVelocity) |
static java.awt.geom.Point2D |
getInterceptVelocity(Mover pursuer,
double speed,
Mover target) |
static java.awt.geom.Point2D |
getInterceptVelocity(Mover pursuer,
Mover target)
Pursuer moves at its max speed
|
static java.awt.geom.Point2D |
getInterceptVelocity(java.awt.geom.Point2D startingLocation,
double speed,
java.awt.geom.Point2D targetLocation,
java.awt.geom.Point2D targetVelocity) |
static int |
getMaxIndex(double[] data) |
static java.awt.geom.Point2D |
getPoint(java.awt.geom.CubicCurve2D curve,
double lambda) |
static java.awt.geom.Point2D |
getPoint(java.awt.geom.QuadCurve2D curve,
double lambda) |
static java.awt.Shape[] |
getSegments(java.awt.Shape shape,
java.awt.geom.AffineTransform transform)
Takes the given Shape and breaks it up into the individual segments that
make up the Shape.
|
static java.awt.geom.AffineTransform |
getTransform(java.awt.geom.Point2D p1,
java.awt.geom.Point2D p2) |
static java.awt.geom.Point2D |
getZero() |
static double[] |
innerProduct(java.awt.geom.Point2D[] points,
java.awt.geom.Point2D by)
Computes the inner product of each of the points in the array with the
given point.
|
static double |
innerProduct(java.awt.geom.Point2D first,
java.awt.geom.Point2D second) |
static double |
norm(java.awt.geom.Point2D point) |
static double |
normSq(java.awt.geom.Point2D point) |
static double |
normSquared(java.awt.geom.Point2D point) |
static java.awt.geom.Point2D |
orthogonal(java.awt.geom.Point2D point)
Returns a vector that is orthogonal to the given vector.
|
static java.awt.geom.Point2D |
scalarMultiply(double value,
java.awt.geom.Point2D point) |
static java.awt.geom.Point2D |
scaleTo(java.awt.geom.Point2D point,
double scale) |
static double |
smallestPositive(double[] data) |
static double |
smallestPositive(double[] data,
double tolerance)
Returns the smallest positive value of the members of the given array,
where any number less than the tolerance is considered to be
non-positive.
|
static double |
smallestPositive(double[] data,
int num) |
static double |
smallestPositive(double[] data,
int num,
double tolerance)
Returns the smallest positive value of the first num members of the given
array, where any number less than the tolerance is considered to be
non-positive.
|
static java.awt.geom.Point2D |
subtract(java.awt.geom.Point2D first,
java.awt.geom.Point2D second) |
static java.awt.geom.Point2D |
unitVector(java.awt.geom.Point2D vector)
Computes a unit vector in the direction of the argument.
|
public static final java.awt.geom.Point2D ZERO
public static final double TINY
public static final java.awt.geom.AffineTransform IDENTITY_TRANSFORM
public static java.awt.geom.Point2D getZero()
public static java.awt.geom.Point2D add(java.awt.geom.Point2D first, java.awt.geom.Point2D second)
first
- First Point2Dsecond
- Point2Dpublic static java.awt.geom.Point2D add(java.awt.geom.Point2D[] points)
points
- Given array of Point2Dspublic static double[] innerProduct(java.awt.geom.Point2D[] points, java.awt.geom.Point2D by)
points
- Given array of Point2Dsby
- Given Point2D to compute inner product withpoints
with
by
.public static java.awt.geom.Point2D subtract(java.awt.geom.Point2D first, java.awt.geom.Point2D second)
first
- Given first Point2Dsecond
- Given second Point2Dpublic static java.awt.geom.Point2D scalarMultiply(double value, java.awt.geom.Point2D point)
value
- Given scalar valuepoint
- Given Point2Dpublic static java.awt.geom.Point2D unitVector(java.awt.geom.Point2D vector)
vector
- Given Point2Dpublic static double innerProduct(java.awt.geom.Point2D first, java.awt.geom.Point2D second)
first
- Point2Dsecond
- Point2Dpublic static java.awt.geom.Point2D orthogonal(java.awt.geom.Point2D point)
point
- given Point2Dpublic static double norm(java.awt.geom.Point2D point)
point
- given pointpublic static double normSq(java.awt.geom.Point2D point)
point
- given pointpublic static double normSquared(java.awt.geom.Point2D point)
point
- given pointpublic static java.awt.geom.Point2D[] findIntersection(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.geom.Line2D line)
start
- Given starting Point2Dvelocity
- Given direction from the starting pointline
- Given Line2D to find intersection ofpublic static double[] findIntersectionTime(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.Shape shape)
start
- normally the targetLocationvelocity
- normally the relative velocity between the target and the
sensorshape
- the footprint of the sensorpublic static java.awt.geom.AffineTransform getTransform(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2)
p1
- first Point2Dp2
- second Point2Dpublic static java.awt.geom.Point2D getCenter(java.awt.geom.RectangularShape shape)
shape
- given rectanglepublic static java.awt.geom.Point2D[] findIntersection(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.geom.QuadCurve2D curve)
start
- Starting locationvelocity
- velocity vectorcurve
- Given QuadCurve2D to find intersections ofpublic static java.awt.geom.Point2D[] findIntersection(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.Shape shape)
start
- Starting locationvelocity
- velocityshape
- Given shapepublic static java.awt.geom.Point2D[] findIntersection(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.Shape shape, java.awt.geom.AffineTransform trans)
start
- Starting pointvelocity
- Given velocityshape
- Give shapetrans
- Given AffineTrsansformpublic static java.util.Set<java.awt.geom.Point2D> eliminateDuplicates(java.util.List<java.awt.geom.Point2D> intersections, double tolerance)
intersections
- Given List of Point2Ds with possible duplicatestolerance
- Given tolerance - Point2Ds within this distance are
considered identicalpublic static java.awt.geom.Point2D[] findIntersection(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.geom.Ellipse2D ellipse)
start
- Starting locationvelocity
- Given velocityellipse
- Given Ellipse2Dpublic static java.awt.geom.Point2D[] findIntersection(java.awt.geom.Point2D start, java.awt.geom.Point2D velocity, java.awt.geom.CubicCurve2D curve)
start
- Given starting point ofvelocity
- Given velocity vectorcurve
- Given CubicCurve2Dpublic static java.awt.geom.Point2D getPoint(java.awt.geom.QuadCurve2D curve, double lambda)
curve
- Given QuadCurve2Dlambda
- Given factorpublic static java.awt.geom.Point2D getPoint(java.awt.geom.CubicCurve2D curve, double lambda)
public static java.awt.Shape[] getSegments(java.awt.Shape shape, java.awt.geom.AffineTransform transform)
shape
- The Shape to break up into segments.transform
- An optional AffineTransform to apply to the segments of
the Shape. If null
then no transform is applied.public static double smallestPositive(double[] data, int num)
data
- Given array of doublesnum
- Given number of values to considerpublic static double smallestPositive(double[] data, int num, double tolerance)
data
- Given datanum
- Given number of data points to consider (must be <
data.length)tolerance
- Given tolerancepublic static double smallestPositive(double[] data, double tolerance)
data
- Given arraytolerance
- Given tolerancepublic static double smallestPositive(double[] data)
data
- given arraypublic static int getMaxIndex(double[] data)
data
- given arraypublic static java.awt.geom.Point2D[] getCoefficients(java.awt.geom.Line2D line)
line
- Given Line2dpublic static java.awt.geom.Point2D[] getCoefficients(java.awt.geom.QuadCurve2D quadCurve)
quadCurve
- Given QuadCurve2Dpublic static java.awt.geom.Point2D[] getCoefficients(java.awt.geom.CubicCurve2D cubicCurve)
cubicCurve
- Given CubicCurve2Dpublic static java.awt.geom.Point2D scaleTo(java.awt.geom.Point2D point, double scale)
point
- Given Point2Dscale
- Given scale - if negative, reverses direction of Pointpublic static java.awt.geom.Point2D getIntercept(java.awt.geom.Point2D startingLocation, double speed, java.awt.geom.Point2D targetLocation, java.awt.geom.Point2D targetVelocity)
startingLocation
- Starting location of pursuerspeed
- Given speed of pursuertargetLocation
- target locationtargetVelocity
- target velocitypublic static java.awt.geom.Point2D getIntercept(Mover pursuer, double speed, Mover target)
pursuer
- Given pursuerspeed
- Given speed of pursuertarget
- Given targetpublic static java.awt.geom.Point2D getIntercept(Mover pursuer, Mover target)
pursuer
- Given pursuertarget
- Given targetpublic static java.awt.geom.Point2D getInterceptVelocity(Mover pursuer, double speed, Mover target)
pursuer
- Given pursuerspeed
- Given speed of pursuertarget
- Given targetpublic static java.awt.geom.Point2D getInterceptVelocity(java.awt.geom.Point2D startingLocation, double speed, java.awt.geom.Point2D targetLocation, java.awt.geom.Point2D targetVelocity)
startingLocation
- Pursuer starting locationspeed
- Pursuer speedtargetLocation
- Target starting locationtargetVelocity
- Target velocitypublic static java.awt.geom.Point2D getInterceptVelocity(Mover pursuer, Mover target)
pursuer
- Given Mover in pursuittarget
- Given Mover targetpublic static java.awt.geom.Point2D getIntercept(Mover pursuer, double speed, double range, Mover target)
pursuer
- Given Mover in pursuitspeed
- Given speed for the pursuer in pursuitrange
- When pursuer is within this range, pausetarget
- Given Mover targetpublic static java.awt.geom.Point2D getIntercept(java.awt.geom.Point2D startingLocation, double speed, double range, java.awt.geom.Point2D targetLocation, java.awt.geom.Point2D targetVelocity)
public static double bearingFrom(java.awt.geom.Point2D point, java.awt.geom.Point2D toPoint)
point
- (from)toPoint
- (to)