Package sim.util

Class Int3D

All Implemented Interfaces:
Serializable

public final class Int3D extends Number3D
Int3D stores three values (x, y, and z) but it is immutable: once the x and y and z values are set, they cannot be changed (they're final). Like the others, Int3D is immutable primarily to prevent hash tables from breaking.

One day in the far future, Int3D 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.

Int3D.equals(...) can compare by value against other Int3Ds, MutableInt2Ds, and Double3Ds.

See Also:
  • Field Details

    • x

      public final int x
    • y

      public final int y
    • z

      public final int z
  • Constructor Details

    • Int3D

      public Int3D()
    • Int3D

      public Int3D(int x, int y, int z)
    • Int3D

      public Int3D(Int2D p)
      Explicitly assumes the z value is set to 0
    • Int3D

      public Int3D(Int2D p, int z)
    • Int3D

      public Int3D(MutableInt2D p)
    • Int3D

      public Int3D(MutableInt2D p, int z)
  • Method Details

    • numDimensions

      public int numDimensions()
      Description copied from class: NumberND
      Returns the number of dimensions of this NumberND (normally 2 or 3)
      Specified by:
      numDimensions in class NumberND
    • getVal

      public double getVal(int val)
      Description copied from class: NumberND
      Returns the value at position VAL in this NumberND (val should 0, 1, or sometimes 2)
      Specified by:
      getVal in class NumberND
    • toBytes

      public byte[] toBytes()
      Description copied from class: NumberND
      Flattens out the NumberND to an array of bytes, including the NumberND subtype.
      Specified by:
      toBytes in class NumberND
    • getX

      public final int getX()
    • getY

      public final int getY()
    • getZ

      public final int getZ()
    • toString

      public String toString()
      Description copied from class: NumberND
      Returns this NumberND as a nicely formatted String.
      Specified by:
      toString in class NumberND
    • toCoordinates

      public String toCoordinates()
      Description copied from class: NumberND
      Returns this NumberND in mathematical coordinates as a formatted String.
      Specified by:
      toCoordinates in class NumberND
    • toArrayAsDouble

      public double[] toArrayAsDouble()
      Specified by:
      toArrayAsDouble in class NumberND
    • hashCode

      public int hashCode()
      Description copied from class: NumberND
      Provides a hashcode for this NumberND.
      Specified by:
      hashCode in class NumberND
    • equals

      public boolean equals(Object obj)
      Description copied from class: NumberND
      Returns whether this NumberND is equivalent to some other NumberND.
      Specified by:
      equals in class NumberND
    • distance

      public double distance(double x, double y, double z)
      Returns the distance FROM this Int3D TO the specified point
    • distance

      public double distance(Double3D p)
      Returns the distance FROM this Int3D TO the specified point.
    • distance

      public double distance(MutableInt3D p)
      Returns the distance FROM this Int3D TO the specified point.
    • distance

      public double distance(Int3D p)
      Returns the distance FROM this Int3D TO the specified point.
    • distanceSq

      public double distanceSq(double x, double y, double z)
      Returns the squared distance FROM this Int3D TO the specified point
    • distanceSq

      public double distanceSq(Double3D p)
      Returns the squared distance FROM this Int3D TO the specified point.
    • distanceSq

      public double distanceSq(MutableInt3D p)
      Returns the squared distance FROM this Int3D TO the specified point.
    • distanceSq

      public double distanceSq(Int3D p)
      Returns the squared distance FROM this Int3D TO the specified point.
    • manhattanDistance

      public long manhattanDistance(int x, int y, int z)
      Returns the manhattan distance FROM this Int3D TO the specified point.
    • manhattanDistance

      public long manhattanDistance(MutableInt3D p)
      Returns the manhattan distance FROM this Int3D TO the specified point.
    • manhattanDistance

      public long manhattanDistance(Int3D p)
      Returns the manhattan distance FROM this Int3D TO the specified point.
    • add

      public Double3D add(double dx, double dy, double dz)
      Specified by:
      add in class Number3D
    • add

      public Int3D add(int dx, int dy, int dz)
    • add

      public Int3D add(Int3D other)
      Specified by:
      add in class Number3D
    • subtract

      public Int3D subtract(Int3D other)
      Specified by:
      subtract in class Number3D
    • add

      public Double3D add(Double3D other)
      Specified by:
      add in class Number3D
    • subtract

      public Double3D subtract(Double3D other)
      Specified by:
      subtract in class Number3D