user: Describe Math Types & Utilities (mathutils) from the Blender manual or Python API, including usage steps and snippets.

assistant: tep between successive values in the vector.

    *classmethod* Repeat(*vector*, *size*, */*)
    :   Create a vector by repeating the values in vector until the required size is reached.

        Parameters:
        :   - **vector** ([`mathutils.Vector`](#mathutils.Vector "mathutils.Vector")) – The vector to draw values from.
            - **size** (*int*) – The size of the vector to be created.

    angle(*other*, *fallback=None*, */*)
    :   Return the angle between two vectors.

        Parameters:
        :   - **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – another vector to compare the angle with
            - **fallback** (*Any*) – return this when the angle can’t be calculated (zero length vector),
              (instead of raising a `ValueError`).

        Returns:
        :   angle in radians or fallback when given

        Return type:
        :   float | Any

    angle_signed(*other*, *fallback=None*, */*)
    :   Return the signed angle between two 2D vectors (clockwise is positive).

        Parameters:
        :   - **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – another vector to compare the angle with
            - **fallback** (*Any*) – return this when the angle can’t be calculated (zero length vector),
              (instead of raising a `ValueError`).

        Returns:
        :   angle in radians or fallback when given

        Return type:
        :   float | Any

    copy()
    :   Returns a copy of this vector.

        Returns:
        :   A copy of the vector.

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    cross(*other*, */*)
    :   Return the cross product of this vector and another.

        Parameters:
        :   **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – The other vector to perform the cross product with.

        Returns:
        :   The cross product as a vector or a float when 2D vectors are used.

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector") | float

    dot(*other*, */*)
    :   Return the dot product of this vector and another.

        Parameters:
        :   **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – The other vector to perform the dot product with.

        Returns:
        :   The dot product.

        Return type:
        :   float

    freeze()
    :   Make this object immutable.

        After this the object can be hashed, used in dictionaries & sets.

        Returns:
        :   An instance of this object.

    lerp(*other*, *factor*, */*)
    :   Returns the interpolation of two vectors.

        Parameters:
        :   - **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – value to interpolate with.
            - **factor** (*float*) – The interpolation value in [0.0, 1.0].

        Returns:
        :   The interpolated vector.

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    negate()
    :   Set all values to their negative.

    normalize()
    :   Normalize the vector, making the length of the vector always 1.0.

    normalized()
    :   Return a new, normalized vector.

        Returns:
        :   a normalized copy of the vector

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    orthogonal()
    :   Return a perpendicular vector.

        Returns:
        :   a new vector 90 degrees from this vector.

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    project(*other*, */*)
    :   Return the projection of this vector onto the *other*.

        Parameters:
        :   **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – second vector.

        Returns:
        :   the parallel projection vector

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    reflect(*mirror*, */*)
    :   Return the reflection vector from the *mirror* argument.

        Parameters:
        :   **mirror** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – This vector could be a normal from the reflecting surface.

        Returns:
        :   The reflected vector matching the size of this vector.

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    resize(*size*, */*)
    :   Resize the vector to have size number of elements.

    resize_2d()
    :   Resize the vector to 2D (x, y).

    resize_3d()
    :   Resize the vector to 3D (x, y, z).

    resize_4d()
    :   Resize the vector to 4D (x, y, z, w).

    resized(*size*, */*)
    :   Return a resized copy of the vector with size number of elements.

        Returns:
        :   a new vector

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    rotate(*other*, */*)
    :   Rotate the vector by a rotation value.

        Parameters:
        :   **other** ([`Euler`](#mathutils.Euler "mathutils.Euler") | [`Quaternion`](#mathutils.Quaternion "mathutils.Quaternion") | [`Matrix`](#mathutils.Matrix "mathutils.Matrix")) – rotation component of mathutils value

    rotation_difference(*other*, */*)
    :   Returns a quaternion representing the rotational difference between this
        vector and another.

        Parameters:
        :   **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – second vector.

        Returns:
        :   the rotational difference between the two vectors.

        Return type:
        :   [`Quaternion`](#mathutils.Quaternion "mathutils.Quaternion")

    slerp(*other*, *factor*, *fallback=None*, */*)
    :   Returns the interpolation of two non-zero vectors (spherical coordinates).

        Parameters:
        :   - **other** ([`Vector`](#mathutils.Vector "mathutils.Vector")) – value to interpolate with.
            - **factor** (*float*) – The interpolation value typically in [0.0, 1.0].
            - **fallback** (*Any*) – return this when the vector can’t be calculated (zero length vector or direct opposites),
              (instead of raising a `ValueError`).

        Returns:
        :   The interpolated vector.

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    to_2d()
    :   Return a 2d copy of the vector.

        Returns:
        :   a new vector

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    to_3d()
    :   Return a 3d copy of the vector.

        Returns:
        :   a new vector

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    to_4d()
    :   Return a 4d copy of the vector.

        Returns:
        :   a new vector

        Return type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    to_track_quat(*track='Z'*, *up='Y'*, */*)
    :   Return a quaternion rotation from the vector and the track and up axis.

        Parameters:
        :   - **track** (*Literal**[**'-'**,* *'X'**,* *'Y'**,* *'Z'**,* *'-X'**,* *'-Y'**,* *'-Z'**]*) – Track axis string.
            - **up** (*Literal**[**'X'**,* *'Y'**,* *'Z'**]*) – Up axis string.

        Returns:
        :   rotation from the vector and the track and up axis.

        Return type:
        :   [`Quaternion`](#mathutils.Quaternion "mathutils.Quaternion")

    to_tuple(*precision=-1*, */*)
    :   Return this vector as a tuple with a given precision.

        Parameters:
        :   **precision** (*int*) – The number to round the value to in [-1, 21].

        Returns:
        :   the values of the vector rounded by *precision*

        Return type:
        :   tuple[float, …]

    zero()
    :   Set all values to zero.

    is_frozen
    :   True when this object has been frozen (read-only).

        Type:
        :   bool

    is_valid
    :   True when the owner of this data is valid.

        Type:
        :   bool

    is_wrapped
    :   True when this object wraps external data (read-only).

        Type:
        :   bool

    length
    :   Vector Length.

        Type:
        :   float

    length_squared
    :   Vector length squared (v.dot(v)).

        Type:
        :   float

    magnitude
    :   Vector Length.

        Type:
        :   float

    owner
    :   The item this is wrapping or None (read-only).

    w
    :   Vector W axis (4D Vectors only).

        Type:
        :   float

    ww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    www
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwxy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwxz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwyw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwyx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwyy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwyz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwzw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwzx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwzy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wwzz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxxy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxxz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxyw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxyx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxyy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxyz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxzw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxzx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxzy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wxzz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wywx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wywy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wywz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyxy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyxz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyyw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyyx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyyy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyyz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyzw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyzx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyzy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wyzz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzxy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzxz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzyw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzyx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzyy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzyz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzzw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzzx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzzy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    wzzz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    x
    :   Vector X axis.

        Type:
        :   float

    xw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwxy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwxz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwyw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwyx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwyy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwyz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwzw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwzx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwzy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xwzz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxww
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxwx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxwy
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxwz
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxx
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxxw
    :   Type:
        :   [`Vector`](#mathutils.Vector "mathutils.Vector")

    xxxx
    :   Type: