Package sim.util
Class Int2D
java.lang.Object
sim.util.NumberND
sim.util.Number2D
sim.util.Int2D
- All Implemented Interfaces:
Serializable
Int2D is more or less the same class as java.awt.Point, but it is immutable: once the x and y values are set, they cannot be changed (they're final). Why use this immutable class when you could just use Point? Because Point is broken with respect to hash tables. You use Point as a key in a hash table at your own peril. Try this: hash an object by a Point as key. Then change the x value of the original Point. Ta-da! The object is lost in the hash table.
One day in the far future, Int2D should also be HIGHLY efficient; since it is immutable, it can be passed by value rather than by pointer by a smart compiler. Not today, though. But it's not bad.
This class has an elaborate hash code generation that is much more random than Sun's standard generator, but takes more time. For very large numbers of objects, this is a good idea, but we may change it to a simpler version in the future.
Int2D.equals(...) can compare by value against other Int2Ds, MutableInt2Ds, Double2Ds, and MutableDouble2Ds.
- See Also:
-
Field Summary
FieldsFields inherited from class sim.util.NumberND
TYPE_DOUBLE_2D, TYPE_DOUBLE_3D, TYPE_INT_2D, TYPE_INT_3D, TYPE_MUTABLE_DOUBLE_2D, TYPE_MUTABLE_DOUBLE_3D, TYPE_MUTABLE_INT_2D, TYPE_MUTABLE_INT_3D -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd(double dx, double dy) add(int dx, int dy) doubledistance(double x, double y) Returns the distance FROM this Int2D TO the specified pointdoubleReturns the distance FROM this Int2D TO the specified point.doubleReturns the distance FROM this Int2D TO the specified point.doubleReturns the distance FROM this Int2D TO the specified point.doubleReturns the distance FROM this Int2D TO the specified point.doubledistanceSq(double x, double y) Returns the squared distance FROM this Int2D TO the specified pointdoubleReturns the squared distance FROM this Int2D TO the specified pointdoubleReturns the squared distance FROM this Int2D TO the specified point.doubledistanceSq(Int2D p) Returns the squared distance FROM this Int2D TO the specified point.doubleReturns the squared distance FROM this Int2D TO the specified point.final booleanReturns whether this NumberND is equivalent to some other NumberND.booleanReturns true I am equal to valbooleanReturns true I am equal to valdoublegetVal(int val) Returns the value at position VAL in this NumberND (val should 0, 1, or sometimes 2)final intgetX()final intgetY()final inthashCode()Provides a hashcode for this NumberND.longmanhattanDistance(int x, int y) Returns the manhattan distance FROM this Int2D TO the specified point.longReturns the manhattan distance FROM this Int2D TO the specified point.longReturns the manhattan distance FROM this Int2D TO the specified point.longReturns the manhattan distance FROM this Int2D TO the specified point.intReturns the number of dimensions of this NumberND (normally 2 or 3)int[]toArray()double[]byte[]toBytes()Flattens out the NumberND to an array of bytes, including the NumberND subtype.Returns this NumberND in mathematical coordinates as a formatted String.toPoint()toString()Returns this NumberND as a nicely formatted String.Methods inherited from class sim.util.NumberND
doubleFromBytes, doubleToBytes, fromBytes, getDistanceSq, getOffsets, intFromBytes, intToBytes, main, mutable
-
Field Details
-
x
public final int x -
y
public final int y
-
-
Constructor Details
-
Int2D
public Int2D() -
Int2D
-
Int2D
-
Int2D
public Int2D(int x, int y) -
Int2D
public Int2D(int[] vals)
-
-
Method Details
-
numDimensions
public int numDimensions()Description copied from class:NumberNDReturns the number of dimensions of this NumberND (normally 2 or 3)- Specified by:
numDimensionsin classNumberND
-
getVal
public double getVal(int val) Description copied from class:NumberNDReturns the value at position VAL in this NumberND (val should 0, 1, or sometimes 2) -
toBytes
public byte[] toBytes()Description copied from class:NumberNDFlattens out the NumberND to an array of bytes, including the NumberND subtype. -
getX
public final int getX() -
getY
public final int getY() -
toPoint2D
-
toPoint
-
toString
Description copied from class:NumberNDReturns this NumberND as a nicely formatted String. -
toCoordinates
Description copied from class:NumberNDReturns this NumberND in mathematical coordinates as a formatted String.- Specified by:
toCoordinatesin classNumberND
-
toArray
public int[] toArray() -
toArrayAsDouble
public double[] toArrayAsDouble()- Specified by:
toArrayAsDoublein classNumberND
-
hashCode
public final int hashCode()Description copied from class:NumberNDProvides a hashcode for this NumberND. -
equals
Description copied from class:NumberNDReturns whether this NumberND is equivalent to some other NumberND. -
equals
Returns true I am equal to val -
equals
Returns true I am equal to val -
distance
public double distance(double x, double y) Returns the distance FROM this Int2D TO the specified point -
distance
Returns the distance FROM this Int2D TO the specified point. -
distance
Returns the distance FROM this Int2D TO the specified point. -
distance
Returns the distance FROM this Int2D TO the specified point. -
distance
Returns the distance FROM this Int2D TO the specified point. -
distanceSq
public double distanceSq(double x, double y) Returns the squared distance FROM this Int2D TO the specified point -
distanceSq
Returns the squared distance FROM this Int2D TO the specified point. -
distanceSq
Returns the squared distance FROM this Int2D TO the specified point -
distanceSq
Returns the squared distance FROM this Int2D TO the specified point. -
distanceSq
Returns the squared distance FROM this Int2D TO the specified point. -
manhattanDistance
public long manhattanDistance(int x, int y) Returns the manhattan distance FROM this Int2D TO the specified point. -
manhattanDistance
Returns the manhattan distance FROM this Int2D TO the specified point. -
manhattanDistance
Returns the manhattan distance FROM this Int2D TO the specified point. -
manhattanDistance
Returns the manhattan distance FROM this Int2D TO the specified point. -
add
-
add
-
add
-
subtract
-
add
-
subtract
-
max
-
min
-