Class Vector

java.lang.Object
org.eclipse.gef.geometry.euclidean.Vector
All Implemented Interfaces:
Serializable, Cloneable

public class Vector extends Object implements Cloneable, Serializable
Represents a Vector within 2-dimensional Euclidean space.
See Also:
  • Field Details

    • NULL

      public static final Vector NULL
      The (0,0) vector.
    • x

      public double x
      The x coordinate of this Vector.
    • y

      public double y
      The y coordinate of this Vector.
  • Constructor Details

    • Vector

      public Vector(double x, double y)
      Constructs a Vector that points in the specified direction.
      Parameters:
      x - x coordinate
      y - y coordinate
    • Vector

      public Vector(Point p)
      Constructs a Vector that is the position Vector of the given Point.
      Parameters:
      p - the Point to construct a position Vector for
    • Vector

      public Vector(Point start, Point end)
      Constructs a Vector representing the direction and magnitude between to provided Points.
      Parameters:
      start - the start Point
      end - the end Point
    • Vector

      public Vector(Vector start, Vector end)
      Constructs a Vector representing the difference between two provided Vectors.
      Parameters:
      start - the start Vector
      end - the end Vector
  • Method Details

    • clone

      public Vector clone()
      Clones the given Vector using getCopy().
      Overrides:
      clone in class Object
      Returns:
      a copy of this Vector object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
      See Also:
    • getAdded

      public Vector getAdded(Vector other)
      Returns a new Vector that represents the sum of this Vector and the given other Vector.
      Parameters:
      other - the Vector that is added to this Vector
      Returns:
      a new Vector representing the sum of this Vector and the given other Vector
    • getAngle

      public Angle getAngle(Vector other)
      Returns the smallest Angle between this Vector and the provided one.
      Parameters:
      other - the Vector for which the smallest Angle to this Vector is calculated
      Returns:
      the smallest Angle between this Vector and the provided one
    • getAngleCCW

      public Angle getAngleCCW(Vector other)
      Returns the counter-clockwise (CCW) Angle between this Vector and the provided one.
      Parameters:
      other - the Vector for which the CCW Angle to this Vector is calculated
      Returns:
      the counter-clockwise Angle between this Vector and the provided one
    • getAngleCW

      public Angle getAngleCW(Vector other)
      Returns the clockwise (CW) Angle between this Vector and the provided one.
      Parameters:
      other - the Vector for which the CW Angle to this Vector is calculated
      Returns:
      the clockwise Angle between this Vector and the provided one
    • getAveraged

      public Vector getAveraged(Vector other)
      Creates a new Vector which represents the average of this Vector with the provided one.
      Parameters:
      other - the Vector for which the average with this Vector is calculated
      Returns:
      a new Vector which represents the average of this Vector and the provided one
    • getCopy

      public Vector getCopy()
      Returns a copy of this Vector object.
      Returns:
      a copy of this Vector object
    • getCrossProduct

      public double getCrossProduct(Vector other)
      Calculates the cross product of this Vector (lhs) and the given other Vector (rhs).
      Parameters:
      other - the rhs Vector for which the cross product with this Vector is calculated
      Returns:
      the cross product of this Vector (lhs) and the given other Vector (rhs)
    • getDissimilarity

      public double getDissimilarity(Vector other)
      Calculates the magnitude of the cross product of this Vector with the given other Vector. This method normalizes both Vectors before calculating the cross product. The resulting dissimilarity value represents the amount by which two Vectors are directionally different. For parallel Vectors 0 is returned.
      Parameters:
      other - the Vector to compare to this Vector
      Returns:
      the dissimilarity of both Vectors
    • getDivided

      public Vector getDivided(double factor)
      Creates a new Vector which represents this Vector divided by the provided scalar value.
      Parameters:
      factor - the divisor
      Returns:
      a new Vector which represents this Vector divided by the provided scalar value
    • getDotProduct

      public double getDotProduct(Vector other)
      Calculates the dot product of this Vector and the given other Vector.
      Parameters:
      other - the Vector for which the dot product with this Vector is calculated
      Returns:
      the dot product of the two Vectors
    • getLength

      public double getLength()
      Returns the length of this Vector.
      Returns:
      the length of this Vector
    • getMultiplied

      public Vector getMultiplied(double factor)
      Creates a new Vector which represents this Vector multiplied by the provided scalar value.
      Parameters:
      factor - the scalar multiplication factor to scale this Vector
      Returns:
      a new Vector which represents this Vector multiplied by the provided scalar value
    • getNormalized

      public Vector getNormalized()
      Creates a new Vector that has the same direction as this Vector and a length of 1.
      Returns:
      a new Vector with the same direction as this Vector and a length of 1
    • getOrthogonalComplement

      public Vector getOrthogonalComplement()
      Returns the orthogonal complement of this Vector, which is defined to be (-y, x).
      Returns:
      the orthogonal complement of this Vector
    • getRotatedCCW

      public Vector getRotatedCCW(Angle angle)
      Returns a new Vector which corresponds to this Vector after rotating it counter-clockwise (CCW) by the given Angle.
      Parameters:
      angle - the rotation Angle
      Returns:
      a new Vector which represents the result of the CCW rotation of this Vector
    • getRotatedCW

      public Vector getRotatedCW(Angle angle)
      Returns a new Vector which corresponds to this Vector after rotating it clockwise (CW) by the given Angle.
      Parameters:
      angle - the rotation Angle
      Returns:
      a new Vector which represents the result of the CW rotation of this Vector
    • getSimilarity

      public double getSimilarity(Vector other)
      Calculates the similarity of this Vector and the provided one. The similarity is defined as the absolute value of the dotProduct(). For orthogonal Vectors, 0 is returned.
      Parameters:
      other - the Vector for which the similarity to this Vector is calculated
      Returns:
      the similarity of this Vector and the provided one
      See Also:
    • getSubtracted

      public Vector getSubtracted(Vector other)
      Returns a new Vector that represents the difference of this Vector and the provided one.
      Parameters:
      other - the Vector that is subtracted from this Vector
      Returns:
      a new Vector representing the difference of this Vector and the provided one
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
      See Also:
    • isHorizontal

      public boolean isHorizontal()
      Checks if this Vector is horizontal, i.e. whether its horizontal component (the x coordinate) does not equal 0, while its vertical component (the y coordinate) does.
      Returns:
      true if this Vector's x coordinate does not equal 0 and this Vector's y coordinate does equal 0, otherwise false
    • isNull

      public boolean isNull()
      Checks if this Vector's x and y coordinates are equal to 0.
      Returns:
      true if this Vector's x and y coordinates are equal to 0, otherwise false
    • isOrthogonalTo

      public boolean isOrthogonalTo(Vector other)
      Checks if this Vector and the provided one are orthogonal to each other.
      Parameters:
      other - the Vector which is checked for orthogonality to this Vector
      Returns:
      true if this Vector and the provided one are orthogonal to each other, otherwise false
    • isParallelTo

      public boolean isParallelTo(Vector other)
      Checks if this Vector and the provided one are parallel to each other.
      Parameters:
      other - the Vector that is checked to be parallel to this Vector
      Returns:
      true if this Vector and the provided one are parallel, otherwise false
    • isVertical

      public boolean isVertical()
      Checks if this Vector is vertical, i.e. whether its vertical component (the x coordinate) does not equal 0, while its horizontal component (the y coordinate) does.
      Returns:
      true if this Vector's y coordinate does not equal 0 and this Vector's x coordinate does equal 0,
    • rotateCCW

      public Vector rotateCCW(Angle angle)
      Rotates this Vector counter-clockwise (CCW) by the given Angle.
      Parameters:
      angle - the rotation Angle
      Returns:
      this for convenience
    • rotateCW

      public Vector rotateCW(Angle angle)
      Rotates this Vector clockwise (CW) by the given Angle.
      Parameters:
      angle - the rotation Angle
      Returns:
      this for convenience
    • toPoint

      public Point toPoint()
      Returns a Point representing this Vector.
      Returns:
      a Point representing this Vector
    • toString

      public String toString()
      Overrides:
      toString in class Object
      See Also: