# `pymunk.vec2d` Module

This module contain the Vec2d class that is used in all of pymunk when a vector is needed.

The Vec2d class is used almost everywhere in pymunk for 2d coordinates and vectors, for example to define gravity vector in a space. However, pymunk is smart enough to convert tuples or tuple like objects to Vec2ds so you usually do not need to explicitly do conversions if you happen to have a tuple:

    >>> import pymunk
    >>> space = pymunk.Space()
    >>> print space.gravity
    Vec2d(0.0, 0.0)
    >>> space.gravity = 3,5
    >>> print space.gravity
    Vec2d(3.0, 5.0)
    >>> space.gravity += 2,6
    >>> print space.gravity
    Vec2d(5.0, 11.0)

class `pymunk.vec2d.``Vec2d`(x_or_pair=None, y=None)

  Bases: `list`

  2d vector class, supports vector and scalar operators, and also provides some high level functions.

  `__init__`(x_or_pair=None, y=None)
  `angle`

    Gets or sets the angle (in radians) of a vector

  `angle_degrees`

    Gets or sets the angle (in degrees) of a vector

  `append`(object) → None -- append object to end
  `clear`() → None -- remove all items from L
  `convert_to_basis`(x_vector, y_vector)
  `copy`() → list -- a shallow copy of L
  `count`(value) → integer -- return number of occurrences of value
  `cpvrotate`(other)

    Uses complex multiplication to rotate this vector by the other.

  `cpvunrotate`(other)

    The inverse of cpvrotate

  `cross`(other)
    The cross product between the vector and other vector
      v1.cross(v2) -> v1.x*v2.y - v2.y*v1.x

    Returns: | The cross product

  `dot`(other)
    The dot product between the vector and other vector
      v1.dot(v2) -> v1.x*v2.x + v1.y*v2.y

    Returns: | The dot product

  `extend`(iterable) → None -- extend list by appending elements from the iterable
  `get_angle`()
  `get_angle_between`(other)

    Get the angle between the vector and the other in radians

    Returns: | The angle

  `get_angle_degrees`()
  `get_angle_degrees_between`(other)

    Get the angle between the vector and the other in degrees

    Returns: | The angle (in degrees)

  `get_dist_sqrd`(other)

    The squared distance between the vector and other vector It is more efficent to use this method than to call get_distance() first and then do a sqrt() on the result.

    Returns: | The squared distance

  `get_distance`(other)

    The distance between the vector and other vector

    Returns: | The distance

  `get_length`()

    Get the length of the vector.

    Returns: | The length

  `get_length_sqrd`()

    Get the squared length of the vector. It is more efficent to use this method instead of first call get_length() or access .length and then do a sqrt().

    Returns: | The squared length

  `index`(value[, start[, stop]]) → integer -- return first index of value.

    Raises ValueError if the value is not present.

  `insert`()

    L.insert(index, object) – insert object before index

  `int_tuple`

    Return the x and y values of this vector as ints

  `interpolate_to`(other, range)
  `length`

    Gets or sets the magnitude of the vector

  `normalize_return_length`()

    Normalize the vector and return its length before the normalization

    Returns: | The length before the normalization

  `normalized`()

    Get a normalized copy of the vector Note: This function will return 0 if the length of the vector is 0.

    Returns: | A normalized vector

  static `ones`()

    A vector where both x and y is 1

  `perpendicular`()
  `perpendicular_normal`()
  `pop`([index]) → item -- remove and return item at index (default last).

    Raises IndexError if list is empty or index is out of range.

  `projection`(other)
  `remove`(value) → None -- remove first occurrence of value.

    Raises ValueError if the value is not present.

  `reverse`()

    L.reverse() – reverse IN PLACE

  `rotate`(angle_radians)

    Rotate the vector by angle_radians radians.

  `rotate_degrees`(angle_degrees)

    Rotate the vector by angle_degrees degrees.

  `rotated`(angle_radians)

    Create and return a new vector by rotating this vector by angle_radians radians.

    Returns: | Rotated vector

  `rotated_degrees`(angle_degrees)

    Create and return a new vector by rotating this vector by angle_degrees degrees.

    Returns: | Rotade vector

  `sort`(key=None, reverse=False) → None -- stable sort *IN PLACE*
  static `unit`()

    A unit vector pointing up

  `x`
  `y`
  static `zero`()

    A vector of zero length