Class GVector

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class GVector
    extends GraphicE
    This class represents a Vector, basically a line with a triangular tip.
    If the modulus of the vector is 0 then not even the triangle is drawn.
    • Field Summary

    • Constructor Summary

      Constructors 
      Constructor Description
      GVector​(int x, int y, double l, double a)
      Basic Vector constructor
      GVector​(int x1, int y1, int x2, int y2)
      Basic Vector constructor
      GVector​(GLine line)
      Creates a new vector from a given GLine, using the start point as the application point.
      GVector​(GVector e)
      Copy constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      GVector add​(GVector... vectors)
      Adds a finite number of vectors with no overflow check
      double angleBetween​(GVector v)
      Retrieves the angle between this vector and the one passed as an argument
      double argument()
      Retrieves the argument of the vector (in degrees)
      GVector clone()  
      double cross​(GVector v)
      Calculates the module of the orthogonal vector resulting of the cross product between this vector and the one passed as an argument, considering the z coordinate of both vectors equal to zero
      double distance​(GVector v)  
      double dot​(GVector v)
      Calculates the dot product between this vector and the one passed as an argument
      void draw​(java.awt.Graphics2D g)
      Draws the component on the given graphics
      boolean equals​(java.lang.Object obj)  
      int getXComponent()
      Retrieves the X projection of this vector
      int getYComponent()
      Retrieves the Y projection of this vector
      int hashCode()  
      double modulus()
      Retrieves the modulus of the vector
      void move​(int x, int y)
      Moves the application point of this vector to the given coordinates
      GVector normalized()
      Retrieves a vector with the same direction and application point but with a modulus equal to 1
      double radAngleBetween​(GVector v)
      Retrieves the angle between this vector and the one passed as an argument
      double radArgument()
      Retrieves the argument of the vector (in radians)
      void radRotate​(double a)  
      void rotate​(double a)  
      void scalarMultiplication​(double scalar)
      Multiplies this vector by a scalar
      void setArgument​(double arg)
      Changes the argument of this vector (in degrees)
      void setArrowTipAngle​(double arrowAngle)
      Sets the a new angle for the tip of the arrow (in degrees).
      void setArrowWeight​(int arrowWeight)
      Changes the arrow weight.
      void setModulus​(double modulus)
      Changes the modulus of this vector
      void setRadArgument​(double arg)
      Changes the argument of this vector (in radians)
      GVector subtract​(GVector... vectors)  
      void traslate​(int x, int y)
      Traslates this element on X and Y
      int x()
      Retrieves the X coordinate of the point of application of the vector
      int xf()
      Retrieves the X coordinate of the tip of the vector
      int y()
      Retrieves the Y coordinate of the point of application of the vector
      int yf()
      Retrieves the Y coordinate of the tip of the vector
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • GVector

        public GVector​(GVector e)
        Copy constructor
        Parameters:
        e - GVector to copy
        Throws:
        java.lang.IllegalArgumentException - if e is null
      • GVector

        public GVector​(int x,
                       int y,
                       double l,
                       double a)
        Basic Vector constructor
        Parameters:
        x - x coordinate of the application point of the vector
        y - y coordinate of the application point of the vector
        l - vector modulus
        a - vector angle (in degrees)
      • GVector

        public GVector​(GLine line)
                throws java.lang.IllegalArgumentException
        Creates a new vector from a given GLine, using the start point as the application point.
        Parameters:
        line - the line to use as base for this GVector
        Throws:
        java.lang.IllegalArgumentException - if line is null
      • GVector

        public GVector​(int x1,
                       int y1,
                       int x2,
                       int y2)
        Basic Vector constructor
        Parameters:
        x1 - x coordinate of the application point of the vector
        y1 - y coordinate of the application point of the vector
        x2 - x coordinate of the end of the vector
        y2 - y coordinate of the end of the vector
    • Method Detail

      • scalarMultiplication

        public void scalarMultiplication​(double scalar)
        Multiplies this vector by a scalar
        Parameters:
        scalar - scale
      • dot

        public double dot​(GVector v)
        Calculates the dot product between this vector and the one passed as an argument
        Parameters:
        v - other vector
        Returns:
        dot product
        Throws:
        java.lang.IllegalArgumentException - if v is null
      • cross

        public double cross​(GVector v)
        Calculates the module of the orthogonal vector resulting of the cross product between this vector and the one passed as an argument, considering the z coordinate of both vectors equal to zero
        Parameters:
        v - other vector
        Returns:
        module of the cross product vector
        Throws:
        java.lang.IllegalArgumentException - if v is null
      • angleBetween

        public double angleBetween​(GVector v)
        Retrieves the angle between this vector and the one passed as an argument
        Parameters:
        v - other vector
        Returns:
        Angle between vectors (in degrees)
        Throws:
        java.lang.IllegalArgumentException - if v is null
      • radAngleBetween

        public double radAngleBetween​(GVector v)
        Retrieves the angle between this vector and the one passed as an argument
        Parameters:
        v - other vector
        Returns:
        Angle between vectors (in radians)
        Throws:
        java.lang.IllegalArgumentException - if v is null
      • normalized

        public GVector normalized()
        Retrieves a vector with the same direction and application point but with a modulus equal to 1
        Returns:
        normalized vector
      • setModulus

        public void setModulus​(double modulus)
        Changes the modulus of this vector
        Parameters:
        modulus - new modulus of the vector
      • setRadArgument

        public void setRadArgument​(double arg)
        Changes the argument of this vector (in radians)
        Parameters:
        arg - new argument of the vector
      • setArgument

        public void setArgument​(double arg)
        Changes the argument of this vector (in degrees)
        Parameters:
        arg - new argument of the vector
      • setArrowWeight

        public void setArrowWeight​(int arrowWeight)
        Changes the arrow weight.
        The arrow weight is defined as the length of the arrow, by default the arrow will be appended to the line, but if arrowWeight is negative then the arrow will end at the end of the line.
        Parameters:
        arrowWeight - new arrow weight
      • setArrowTipAngle

        public void setArrowTipAngle​(double arrowAngle)
        Sets the a new angle for the tip of the arrow (in degrees).
        Parameters:
        arrowAngle - angle in degrees.
      • x

        public int x()
        Retrieves the X coordinate of the point of application of the vector
        Returns:
        x coordinate
      • y

        public int y()
        Retrieves the Y coordinate of the point of application of the vector
        Returns:
        y coordinate
      • xf

        public int xf()
        Retrieves the X coordinate of the tip of the vector
        Returns:
        X coordinate
      • yf

        public int yf()
        Retrieves the Y coordinate of the tip of the vector
        Returns:
        Y coordinate
      • getXComponent

        public int getXComponent()
        Retrieves the X projection of this vector
        Returns:
        x component
      • getYComponent

        public int getYComponent()
        Retrieves the Y projection of this vector
        Returns:
        y component
      • modulus

        public double modulus()
        Retrieves the modulus of the vector
        Returns:
        modulus
      • argument

        public double argument()
        Retrieves the argument of the vector (in degrees)
        Returns:
        argument
      • radArgument

        public double radArgument()
        Retrieves the argument of the vector (in radians)
        Returns:
        argument
      • rotate

        public void rotate​(double a)
      • radRotate

        public void radRotate​(double a)
      • add

        public GVector add​(GVector... vectors)
        Adds a finite number of vectors with no overflow check
        Parameters:
        vectors - the vectors to add
        Returns:
        A new GVector equal to the resultant
        Throws:
        java.lang.IllegalArgumentException - if no vector is passed
      • distance

        public double distance​(GVector v)
      • draw

        public void draw​(java.awt.Graphics2D g)
        Description copied from class: GraphicE
        Draws the component on the given graphics
        Specified by:
        draw in class GraphicE
        Parameters:
        g - where to draw
      • traslate

        public void traslate​(int x,
                             int y)
        Description copied from class: GraphicE
        Traslates this element on X and Y
        Specified by:
        traslate in class GraphicE
        Parameters:
        x - size in px of the horizontal translation
        y - size in px of the vertical translation
      • move

        public void move​(int x,
                         int y)
        Moves the application point of this vector to the given coordinates
        Parameters:
        x - new x coordinate
        y - new y coordinate
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class GraphicE