c4d.Vector

class c4d.Vector
Single precision vector mathematics.

A vector class represents a point, a color, a direction, an HPB-angle or a simple coordinate in a 3D space using the Cartesian coordinates x, y and z. The values are stored in the members x, y and z.

For example, positions are stored in the order (X position; Y position; Z position) and rotations in the order (H angle; P angle; B angle).

Cinema 4D also uses vectors to store colors and their values of an RGB (Red, Green, Blue) color model.
The vector class can also represent a direction, an arrow pointing from the origin of the coordinates, such as (0,0,0), to an endpoint3.

Note

Cinema 4D uses a left-handed coordinate system.

Warning

The Vector type does not support the function copy.copy().

Instead use the Vector constructor

import c4d

vec = c4d.Vector(42, 39, 7)
print "Vector:", id(vec), vec

ref = vec
print "Reference:", id(ref), ref

copy = c4d.Vector(vec)
print "Copy:", id(copy), copy

Attributes

Vector.x

X component of the vector.

Type: float

Vector.y

Y component of the vector.

Type: float

Vector.z

Z component of the vector.

Type: float

Methods Signatures

Vector.__init__(self[, x, y, z])
Initializes a new Vector.
Vector.__str__(self)
Returns a string representation of the vector.
Vector.__getitem__(self, key) Retrieves X, Y and Z components by index
Vector.__setitem__(self, key, value) Assigns X, Y and Z components by index
Vector.__add__(self, other) Adds a scalar or vector to the vector
Vector.__sub__(self, other) Subtracts a scalar or vector from the vector
Vector.__mul__(self, other)
If other is a vector, calculates the dot product of the vectors.
Vector.__div__(self, other) Divides each vector component by the scalar
Vector.__mod__(self, other) Calculates the cross product of vectors
Vector.__xor__(self, other)
Multiplies vectors component-wise if other is a vector.
Vector.__abs__(self) Returns a vector with the absolute (positive) value of each component
Vector.__neg__(self) Returns the negative of the vector
Vector.__invert__(self) Returns the normalized vector
Vector.__eq__(self, other) Checks if two vectors are equal.
Vector.__ne__(self, other) Check if two vectors are not equal.
Vector.__ge__(self, other) raise NotImplemented.
Vector.__gt__(self, other) raise NotImplemented.
Vector.__le__(self, other) raise NotImplemented.
Vector.__lt__(self, other) raise NotImplemented.
Vector.Dot(self, v2) Calculates the dot product of the vector and vector v2.
Vector.Cross(self, v2) Calculates the cross product of the vector and vector v2.
Vector.GetLength(self) Calculates the length of the vector.
Vector.GetLengthSquared(self) Calculates the squared length of the vector.
Vector.GetNormalized(self) Calculates the normalized vector, so that GetLength() returns 1.0.
Vector.Normalize(self) Normalizes the vector, so that GetLength() returns 1.0.

Static Methods Signatures

c4d.Vector.GetDistance(self, v1, v2) Retrieve the distance between two vectors.

Methods Documentation

Vector.__init__(self, x=0.0, y=0.0, z=0.0)
Initializes a new Vector.
All arguments are optional so it is possible to create a new vector without any arguments. All components are simply 0.
Otherwise x can be a Vector so all components of the passed vector will be copied to the new vector.
If only a number is passed, all components will be set to this.
c4d.Vector()
# => Vector(0,0,0)

c4d.Vector(100)
# => Vector(100,100,100)

v = c4d.Vector(100,100,100)
c4d.Vector(v)
# => Vector(100,100,100)

c4d.Vector(1,2,3)
# => Vector(1,2,3)
Parameters:
  • x (Union[int, float, c4d.Vector]) – If x is a number and is the only passed argument, set this to all components. If x is a vector, clone it. Otherwise set the X component.
  • y (number) – Set the Y component.
  • z (number) – Set the Z component.
Return type:

c4d.Vector

Returns:

A new vector.

Vector.__str__(self)
Returns a string representation of the vector.
Called if str() is wrapped around a vector object. (See __str__)
vec = Vector(30.0, 40.0, 2)
print vec
# => Vector(30.0, 40.0, 2.0)
Return type:str
Returns:The Vector as string.
Vector.__getitem__(self, key)

Retrieves X, Y and Z components by index

New in version R14.014.

v = c4d.Vector(1,2,3)
x = v[0]
y = v[1]
z = v[2]
print x, y, z
# => 1.0 2.0 3.0
Parameters:key (int) – The component index.
Raises:IndexError – If the index key is out of range : 0<=key<2.
Return type:float
Returns:The vector component.
Vector.__setitem__(self, key, value)

Assigns X, Y and Z components by index

New in version R14.014.

v = c4d.Vector(1,2,3)
v[0] = 0
print v
# => Vector(0, 2, 3)

Note

The Vector objects does not support item deletion. For instance by calling del(v[0]).

Parameters:
  • key (int) – The component index.
  • value (float) – The new vector component.
Raises:

IndexError – If the index key is out of range : 0<=key<2.

Vector.__add__(self, other)

Adds a scalar or vector to the vector

c4d.Vector(1,2,3)+1
# => Vector(2,3,4)

c4d.Vector(1,2,3)+c4d.Vector(2,3,4)
# => Vector(3,5,7)
Parameters:other (Union[c4d.Vector, int, float]) – The other argument.
Return type:c4d.Vector
Returns:The result vector.
Vector.__sub__(self, other)

Subtracts a scalar or vector from the vector

c4d.Vector(1,2,3)-1
# => Vector(0,1,2)

c4d.Vector(1,2,3)-c4d.Vector(2,3,4)
# => Vector(-1,-1,-1)
Parameters:other (Union[c4d.Vector, int, float]) – The other argument.
Return type:c4d.Vector
Returns:The result vector.
Vector.__mul__(self, other)
If other is a vector, calculates the dot product of the vectors.
If other is a float, it multiplies each vector component by the scalar.
If other is a matrix, the vector is transformed by it.
c4d.Vector(1,2,3)*c4d.Vector(2,3,4)
# => 20

c4d.Vector(1,2,3)*5
# => Vector(5,10,15)

c4d.Vector(1,2,3)*c4d.Matrix(v1=c4d.Vector(2,0,0))
# => Vector(2,2,3)
Parameters:other (c4d.Matrix) – The other argument.
Return type:c4d.Vector or float
Returns:A float if other is of type Vector. A vector, if other is of type float or Matrix.
Vector.__div__(self, other)

Divides each vector component by the scalar

c4d.Vector(1,2,3)/5
# => Vector(0.2, 0.4, 0.6)
Parameters:other (number) – The other argument.
Return type:c4d.Vector
Returns:The result vector.
Vector.__mod__(self, other)

Calculates the cross product of vectors

c4d.Vector(1,2,3)%c4d.Vector(2,3,4)
# => Vector(-1, 2, -1)
Parameters:other (c4d.Vector) – The other argument.
Return type:c4d.Vector
Returns:The result vector.
Vector.__xor__(self, other)
Multiplies vectors component-wise if other is a vector.
If other is a matrix then the vector is transformed by it.
c4d.Vector(1,2,3)^c4d.Vector(2,3,4)
# => Vector(2,6,12)

c4d.Vector(1,2,3)^c4d.Matrix(v1=c4d.Vector(2,0,0))
# => Vector(2,2,3)
Parameters:other (c4d.Matrix) – The other argument.
Return type:c4d.Vector
Returns:The result vector.
Vector.__abs__(self)

Returns a vector with the absolute (positive) value of each component

abs(c4d.Vector(-1, -2, -3))
# => Vector(1,2,3)
Return type:c4d.Vector
Returns:The absolute vector.
Vector.__neg__(self)

Returns the negative of the vector

-c4d.Vector(1,2,3)
# => Vector(-1,-2,-3)
Return type:c4d.Vector
Returns:The negative vector.
Vector.__invert__(self)

Returns the normalized vector

~c4d.Vector(1,2,3)
# => Vector(0.267,0.535,0.802)
Return type:c4d.Vector
Returns:The normalized vector.
Vector.__eq__(self, other)

Checks if two vectors are equal.

Parameters:other (c4d.Vector) – The other vector.
Return type:bool
Returns:True if both vectors are equal.
Vector.__ne__(self, other)

Check if two vectors are not equal.

Parameters:other (c4d.Vector) – The other vector.
Return type:bool
Returns:True if both vectors are not equal.
Vector.__ge__(self, other)

raise NotImplemented.

Vector.__gt__(self, other)

raise NotImplemented.

Vector.__le__(self, other)

raise NotImplemented.

Vector.__lt__(self, other)

raise NotImplemented.

Vector.Dot(self, v2)

Calculates the dot product of the vector and vector v2.

Parameters:v2 (c4d.Vector) – The second vector.
Return type:float
Returns:The dot product.
Vector.Cross(self, v2)

Calculates the cross product of the vector and vector v2.

Parameters:v2 (c4d.Vector) – The other vector.
Return type:c4d.Vector
Returns:The result.
Vector.GetLength(self)

Calculates the length of the vector.

Return type:float
Returns:The length.
Vector.GetLengthSquared(self)

Calculates the squared length of the vector.

Return type:float
Returns:The squared length.
Vector.GetNormalized(self)

Calculates the normalized vector, so that GetLength() returns 1.0.

Return type:c4d.Vector
Returns:The normalized vector.
Vector.Normalize(self)

Normalizes the vector, so that GetLength() returns 1.0.

Static Methods Documentation

static c4d.Vector.GetDistance(self, v1, v2)

Retrieve the distance between two vectors.

Parameters:
Returns:

the distance from v1 to v2.

Return type:

float