Class Coord3d

  • All Implemented Interfaces:
    Serializable

    public class Coord3d
    extends Object
    implements Serializable
    A Coord3d stores a 3 dimensional coordinate for cartesian or polar mode, and provide few operators. Operators allow adding, substracting, multiplying and divising coordinate values, as well as computing the distance between two points, and converting polar and cartesian coordinates.
    Author:
    Martin Pernollet
    See Also:
    Serialized Form
    • Field Detail

      • x

        public float x
      • y

        public float y
      • z

        public float z
      • ORIGIN

        public static final Coord3d ORIGIN
        The origin is a Coord3d having value 0 for each dimension.
      • IDENTITY

        public static final Coord3d IDENTITY
        The origin is a Coord3d having value 1 for each dimension.
      • INVALID

        public static final Coord3d INVALID
        An invalid Coord2d has value NaN for each dimension.
    • Constructor Detail

      • Coord3d

        public Coord3d()
        Create a 3d coordinate with value 0 for each dimension.
      • Coord3d

        public Coord3d​(float xi,
                       float yi,
                       float zi)
        Create a 3d coordinate. When using polar mode, x represents azimuth, y represents elevation, and z represents range.
      • Coord3d

        public Coord3d​(Coord2d c,
                       float zi)
      • Coord3d

        public Coord3d​(Coord2d c,
                       double zi)
      • Coord3d

        public Coord3d​(Coord2d c)
      • Coord3d

        public Coord3d​(float[] c)
      • Coord3d

        public Coord3d​(double[] c)
      • Coord3d

        public Coord3d​(double xi,
                       double yi,
                       double zi)
        Create a 3d coordinate. When using polar mode, x is azimuth, y is elevation, and z is range.
    • Method Detail

      • list

        public static List<Coord3d> list​(int size)
      • set

        public Coord3d set​(float x,
                           float y,
                           float z)
      • clone

        public Coord3d clone()
        Return a duplicate of this 3d coordinate.
        Overrides:
        clone in class Object
      • getXY

        public Coord2d getXY()
        Return the x and y component as a 2d coordinate.
      • add

        public Coord3d add​(Coord3d c2)
        Add a Coord3d to the current one and return the result in a new Coord3d.
        Parameters:
        c2 -
        Returns:
        the result Coord3d
      • add

        public Coord3d add​(float x,
                           float y,
                           float z)
      • addSelf

        public Coord3d addSelf​(float x,
                               float y,
                               float z)
      • add

        public Coord3d add​(float value)
        Add a value to all components of the current Coord and return the result in a new Coord3d.
        Parameters:
        value -
        Returns:
        the result Coord3d
      • addSelf

        public Coord3d addSelf​(float value)
      • sub

        public Coord3d sub​(Coord3d c2)
        Substract a Coord3d to the current one and return the result in a new Coord3d.
        Parameters:
        c2 -
        Returns:
        the result Coord3d
      • sub

        public Coord3d sub​(float x2,
                           float y2,
                           float z2)
      • sub

        public Coord3d sub​(float value)
        Substract a value to all components of the current Coord and return the result in a new Coord3d.
        Parameters:
        value -
        Returns:
        the result Coord3d
      • subSelf

        public Coord3d subSelf​(float value)
      • mul

        public Coord3d mul​(Coord3d c2)
        Multiply a Coord3d to the current one and return the result in a new Coord3d.
        Parameters:
        c2 -
        Returns:
        the result Coord3d
      • mul

        public Coord3d mul​(float x,
                           float y,
                           float z)
      • mul

        public Coord3d mul​(float value)
        Multiply all components of the current Coord and return the result in a new Coord3d.
        Parameters:
        value -
        Returns:
        the result Coord3d
      • mulSelf

        public void mulSelf​(Coord3d c2)
      • mulSelf

        public void mulSelf​(float x,
                            float y,
                            float z)
      • mulSelf

        public void mulSelf​(float value)
      • div

        public Coord3d div​(Coord3d c2)
        Divise a Coord3d to the current one and return the result in a new Coord3d.
        Parameters:
        c2 -
        Returns:
        the result Coord3d
      • divSelf

        public void divSelf​(Coord3d c2)
      • divSelf

        public void divSelf​(float value)
      • divSelf

        public void divSelf​(double value)
      • div

        public Coord3d div​(float value)
        Divise all components of the current Coord by the same value and return the result in a new Coord3d.
        Parameters:
        value -
        Returns:
        the result Coord3d
      • negative

        public Coord3d negative()
      • cartesian

        public Coord3d cartesian()
        Converts the current Coord3d into cartesian coordinates and return the result in a new Coord3d. Assume that
        • X represent azimuth
        • Y represent elevation
        • Z represent distance
        Returns:
        the result Coord3d
      • cartesianSelf

        public Coord3d cartesianSelf()
      • polar

        public Coord3d polar()
        Converts the current Coord3d into polar coordinates and return the result in a new Coord3d.
        Returns:
        the result Coord3d
      • polarSelf

        public Coord3d polarSelf()
      • distance

        public double distance​(Coord3d c)
        Compute the distance between two coordinates.
      • distanceSq

        public double distanceSq​(Coord3d c)
        Compute the square distance between two coordinates.
      • magSquared

        public float magSquared()
      • getNormalizedTo

        public Coord3d getNormalizedTo​(float len)
      • normalizeTo

        public Coord3d normalizeTo​(float len)
      • dot

        public final float dot​(Coord3d v)
      • rotate

        public final Coord3d rotate​(float angleDeg,
                                    Coord3d axis)
        Applies a rotation represented by the AxisAngle notation using the Rodrigues' rotation formula.

        math implemented using http://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula

        Parameters:
        angleDeg - angle of rotation about the given axis [deg]
        axis - unit vector describing an axis of rotation
        Returns:
        rotated copy of the original vector
      • interpolateTo

        public final Coord3d interpolateTo​(Coord3d v,
                                           float f)
      • toString

        public String toString()
        Return a string representation of this coordinate.
        Overrides:
        toString in class Object
      • toArray

        public float[] toArray()
        Return an array representation of this coordinate.
      • toArray

        public void toArray​(float[] array,
                            int offset)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • min

        public static Coord3d min​(List<Coord3d> coords)
        Compute the component-wise minimum values of a set of coordinates.
        Parameters:
        coords -
        Returns:
        minimum value on each dimension
      • max

        public static Coord3d max​(List<Coord3d> coords)
        Compute the component-wise minimum values of a set of coordinates.
        Parameters:
        coords -
        Returns:
        maximum value on each dimension
      • minMax

        public static Pair<Coord3d,​Coord3d> minMax​(List<Coord3d> coords)
        Compute the component-wise minimum and maximum values of a set of coordinates.
        Parameters:
        coords -
        Returns:
        maximum value on each dimension
      • add

        public static void add​(List<Coord3d> coords,
                               float x,
                               float y,
                               float z)
      • sub

        public static void sub​(List<Coord3d> coords,
                               float x,
                               float y,
                               float z)
      • mul

        public static void mul​(List<Coord3d> coords,
                               float x,
                               float y,
                               float z)
      • div

        public static void div​(List<Coord3d> coords,
                               float x,
                               float y,
                               float z)
      • getCoords

        public static List<Coord3d> getCoords​(double[] array)
      • getCoordAt

        public static Coord3d getCoordAt​(double[] array,
                                         int i)
      • getCoords

        public static List<Coord3d> getCoords​(float[] array)
      • getCoordAt

        public static Coord3d getCoordAt​(float[] array,
                                         int i)