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
Vectortype does not support the function copy.copy(), please use theVectorcopy constructor instead.>>> import c4d >>> import copy >>> # A vector and its Python object id. >>> vec = c4d.Vector(1) >>> id(vec), vec (1331515356992, Vector(1, 1, 1)) >>> # We are only creating a reference to the same object. >>> ref = vec >>> id(ref), ref (1331515356992, Vector(1, 1, 1)) >>> # Cinema's types usually do not work with Python's copy module. >>> copy.deepcopy(vec) ... TypeError: can't pickle c4d.Vector objects. >>> # But we can copy objects via copy constructors. >>> copy = c4d.Vector(vec) >>> id(copy), copy (1331515387904, Vector(1, 1, 1))
 
Attributes
Methods Signatures
Initializes a new  
Vector. | 
|
Returns a string representation of the vector. 
 | 
|
Returns the hash code of the vector used for hash maps and comparisons.  | 
|
Retrieves the value of the x, y or z component of the vector. 
 | 
|
Assigns a value to the x, y or z component of the vector. 
 | 
|
Not implemented.  | 
|
Adds an operand to the vector.  | 
|
Adds the vector to an operand.  | 
|
Subtracts an operand from the vector.  | 
|
Subtracts the vector from an operand.  | 
|
Calculates the product of the vector and an left-side operand. 
 | 
|
Calculates the product of the vector and a right-side operand. 
 | 
|
Divides each vector component by a scalar.  | 
|
Not implemented.  | 
|
Calculates the cross product of the vector and an operand.  | 
|
Calculates an alternative product operation of the vector and a left-side operand. 
 | 
|
Not implemented.  | 
|
Returns a vector with the absolute (positive) value of each component.  | 
|
Returns the inverse of the vector.  | 
|
Returns the normalized vector.  | 
|
Checks if two vectors are equal.  | 
|
Check if two vectors are not equal.  | 
|
Not implemented.  | 
|
Not implemented.  | 
|
Not implemented.  | 
|
Not implemented.  | 
Returns the hash code of the vector used for hash maps and comparisons.  | 
|
Tests component-wise if the difference is no bigger than ‘epsilon’.  | 
|
Checks if each component is zero.  | 
|
Sets all components to zero.  | 
|
Calculates the average value of ‘x’, ‘y’ and ‘z’.  | 
|
Calculates the sum of ‘x’, ‘y’ and ‘z’.  | 
|
Set the minimum of each component.  | 
|
Set the maximum of each component.  | 
|
Returns a vector that is clamped to the range [0.0 .. 1.0].  | 
|
Calculates the length of the vector.  | 
|
Calculates the squared length of the vector.  | 
|
Returns the squared length of the vector.  | 
|
Calculates the normalized vector, so that   | 
|
Normalizes the vector, so that   | 
|
Returns the minimum of ‘x’, ‘y’ and ‘z’.  | 
|
Returns the maximum of ‘x’, ‘y’ and ‘z’.  | 
|
Returns a vector where the components have been rotated to the right (in the usual (x, y, z)-representation).  | 
|
Calculates the dot product of the vector and vector v2.  | 
|
Returns the vector with absolute value for each entry  | 
|
Calculates the minimum of each component.  | 
|
Calculates the maximum of each component.  | 
|
Set the minimum of each component.  | 
|
Set the maximum of each component.  | 
|
Calculates angle (in radians) between v1 and v2.  | 
|
Calculates the cross product of the vector and vector v2.  | 
Static Methods Signatures
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 aVectorso 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 (Optional[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 (Optional[Union[int, float]]) – Set the Y component.
z (Optional[Union[int, float]]) – Set the Z component.
 
- 
Vector.__str__(self)¶ - Returns a string representation of the vector.Called if str() is invoked on a vector object. See object.__str__() for more information on Python’s data model.
>>> c4d.Vector(30, 40, 2) Vector(30.0, 40.0, 2.0)
- Return type
 str
- Returns
 The Vector as string.
 
- 
Vector.__hash__(self)¶ Returns the hash code of the vector used for hash maps and comparisons.
New in version S26.
- Returns
 The vector’s hash code.
- Return type
 int
- 
Vector.__getitem__(self, key)¶ - Retrieves the value of the x, y or z component of the vector.The component is identified by an index in the interval [0, 2].
New in version R14.014.
>>> v = c4d.Vector(1, 2, 3) >>> v[0] 1.0 >>> v[1] 2.0 >>> v[2] 3.0
- Parameters
 key (int) – The component index.
- Raises
 IndexError – When key does not satisfy 0 <= key < 2.
- Return type
 float
- Returns
 The vector component.
 
- 
Vector.__setitem__(self, key, value)¶ - Assigns a value to the x, y or z component of the vector.The component is identified by an index in the interval [0, 2].
New in version R14.014.
>>> v = c4d.Vector(1, 2, 3) >>> v[0] = 0 >>> v Vector(0, 2, 3)
- Parameters
 key (int) – The component index.
value (Union[float, int]) – The new vector component.
- Raises
 IndexError – When key does not satisfy 0 <= key < 2.
 
- 
Vector.__del__(self)¶ Not implemented.
Note
The
Vectordoes not support item deletion, e.g., by calling del(v[0]).- Raise
 TypeError.
- 
Vector.__add__(self, other)¶ Adds an operand 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 operand.
- Return type
 - Returns
 The resulting vector.
- 
Vector.__radd__(self, other)¶ Adds the vector to an operand.
>>> 1 + c4d.Vector(1, 2, 3) 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 operand.
- Return type
 - Returns
 The resulting vector.
- 
Vector.__sub__(self, other)¶ Subtracts an operand 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 operand.
- Return type
 - Returns
 The resulting vector.
- 
Vector.__rsub__(self, other)¶ Subtracts the vector from an operand.
>>> 1 - c4d.Vector(1, 2, 3) 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 operand.
- Return type
 - Returns
 The resulting vector.
- 
Vector.__mul__(self, other)¶ - Calculates the product of the vector and an left-side operand.If other is a float, it multiplies each vector component by the scalar.If other is a vector, calculates the dot product of the vectors.If other is a matrix, the vector is transformed by it, including translations.
See also
Vector.__xor__()is the operator implementation for alternative product operations.>>> u = c4d.Vector(1, 0, 0) >>> v = c4d.Vector(2, 0, 0) >>> # A transform rotating by 90° ccw and translating by 100 units on v3 (i.e., the >>> # z-axis, the basis vector k). >>> M = c4d.Matrix(v1=c4d.Vector( 0, 1, 0), v2=c4d.Vector(-1, 0, 0), v3=c4d.Vector( 0, 0, 1), off=c4d.Vector(0, 0, 100)) >>> # Calculates the dot product of u and v. >>> u * v 2.0 >>> # Scales u by the factor of 5. >>> u * 5. Vector(5, 0, 0) >>> # Transforms u by M, including translations. >>> u * M Vector(0, 1, 100)
- Parameters
 other (Union[int, float, c4d.Vector, c4d.Matrix]) – The other operand.
- Return type
 Union[c4d.Vector, float]
- Returns
 A float, if other is of type
Vector. | A vector, if other is of type float orMatrix.
 
- 
Vector.__rmul__(self, other)¶ - Calculates the product of the vector and a right-side operand.If other is a float, it multiplies each vector component by the scalar.If other is a matrix, the vector is transformed by it, including translations.
>>> u = c4d.Vector(1, 0, 0) >>> v = c4d.Vector(2, 0, 0) >>> # A transform rotating by 90° ccw and translating by 100 units on v3 (i.e., the >>> # z-axis, the basis vector k). >>> M = c4d.Matrix(v1=c4d.Vector( 0, 1, 0), v2=c4d.Vector(-1, 0, 0), v3=c4d.Vector( 0, 0, 1), off=c4d.Vector(0, 0, 100)) >>> # Calculates the dot product of u and v. >>> u * v 2.0 >>> # Scales u by the factor of 5. >>> 5. * u Vector(5, 0, 0) >>> # Transforms u by M, including translations. >>> M * u Vector(0, 1, 100)
- Parameters
 other (Union[int, float, c4d.Vector, c4d.Matrix]) – The other operand.
- Return type
 Union[c4d.Vector, float]
- Returns
 A float, if other is of type
Vector. | A vector, if other is of type float orMatrix.
 
- 
Vector.__div__(self, other)¶ Divides each vector component by a scalar.
>>> c4d.Vector(1, 2, 3) / 5 Vector(0.2, 0.4, 0.6)
- Parameters
 other (Union[int, float]) – The other operand.
- Return type
 - Returns
 The resulting vector.
- 
Vector.__rdiv__(self, other)¶ Not implemented.
- Raise
 TypeError.
- 
Vector.__mod__(self, other)¶ Calculates the cross product of the vector and an operand.
>>> c4d.Vector(1, 0, 0) % c4d.Vector(0, 1, 0) Vector(0, 0, 1)
- Parameters
 other (c4d.Vector) – The other operand.
- Return type
 - Returns
 The resulting vector.
- 
Vector.__xor__(self, other)¶ - Calculates an alternative product operation of the vector and a left-side operand.If other is a vector, calculates the component-wise product of the vectors.If other is a matrix, the vector is transformed by it, excluding translations.
See also
Vector.__mul__()is the operator implementation for the primary product operations.>>> u = c4d.Vector(1, 0, 0) >>> v = c4d.Vector(2, 0, 0) >>> # A transform rotating by 90° ccw and translating by 100 units on v3 (i.e., the >>> # z-axis, the basis vector k). >>> M = c4d.Matrix(v1=c4d.Vector( 0, 1, 0), v2=c4d.Vector(-1, 0, 0), v3=c4d.Vector( 0, 0, 1), off=c4d.Vector(0, 0, 100)) >>> # Computes the component-wise product of u and v. >>> u ^ v Vector(2, 0, 0) >>> # Transforms u by M, excluding translations. >>> u ^ M Vector(0, 1, 0)
- Parameters
 other (Union[c4d.Vector, c4d.Matrix]) – The other operand.
- Return type
 Union[c4d.Vector, float]
- Returns
 A float, if other is of type
Vector. | A vector, if other is of type float orMatrix.
 
- 
Vector.__rxor__(self, other)¶ Not implemented.
- Raise
 TypeError.
- 
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
 - Returns
 The absolute vector.
- 
Vector.__neg__(self)¶ Returns the inverse of the vector.
>>> -c4d.Vector(1, 2, 3) Vector(-1,-2,-3)
- Return type
 - Returns
 The inverse vector.
- 
Vector.__invert__(self)¶ Returns the normalized vector.
>>> ~c4d.Vector(1, 2, 3) Vector(0.267,0.535,0.802)
- Return type
 - 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)¶ Not implemented.
- Raise
 TypeError.
- 
Vector.__gt__(self, other)¶ Not implemented.
- Raise
 TypeError.
- 
Vector.__le__(self, other)¶ Not implemented.
- Raise
 TypeError.
- 
Vector.__lt__(self, other)¶ Not implemented.
- Raise
 TypeError.
- 
Vector.GetHashCode(self)¶ Returns the hash code of the vector used for hash maps and comparisons.
New in version S26.
- Returns
 The vector’s hash code.
- Return type
 int
- 
Vector.IsEqual(self, other, epsilon)¶ Tests component-wise if the difference is no bigger than ‘epsilon’.
New in version S26.
- Parameters
 other (c4d.Vector) – The other vector to test.
epsilon (float) – The threshold value.
- Returns
 True if other is in the range of epsilon, False otherwise.
- Return type
 bool
- 
Vector.IsZero(self, epsilon=1e-10)¶ Checks if each component is zero.
New in version S26.
- Parameters
 epsilon (float) – The threshold value.
- Returns
 False if one or more component are bigger than epsilon, otherwise True.
- Return type
 bool
- 
Vector.SetZero(self)¶ Sets all components to zero.
New in version S26.
- 
Vector.GetAverage(self)¶ Calculates the average value of ‘x’, ‘y’ and ‘z’.
New in version S26.
- Returns
 The average value of ‘x’, ‘y’ and ‘z’.
- Return type
 float
- 
Vector.GetSum(self)¶ Calculates the sum of ‘x’, ‘y’ and ‘z’.
New in version S26.
- Returns
 The sum value of ‘x’, ‘y’ and ‘z’.
- Return type
 float
- 
Vector.ClampMin(self, other)¶ Set the minimum of each component.
New in version S26.
- Parameters
 other (c4d.Vector) – The minimum value of ‘x’, ‘y’ and ‘z’.
- 
Vector.ClampMax(self, other)¶ Set the maximum of each component.
New in version S26.
- Parameters
 other (c4d.Vector) – The maximum value of ‘x’, ‘y’ and ‘z’.
- 
Vector.Clamp01(self)¶ Returns a vector that is clamped to the range [0.0 .. 1.0].
New in version S26.
- Returns
 The clamped vector.
- Return type
 
- 
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.
Deprecated since version S26.000: Use
Vector.GetSquaredLength()instead.- Return type
 float
- Returns
 The squared length.
- 
Vector.GetSquaredLength(self)¶ Returns the squared length of the vector.
New in version S26.
- Returns
 The squared length of the vector.
- Return type
 float
- 
Vector.GetNormalized(self)¶ Calculates the normalized vector, so that
GetLength()returns 1.0.- Return type
 - Returns
 The normalized vector.
- 
Vector.Normalize(self)¶ Normalizes the vector, so that
GetLength()returns 1.0.
- 
Vector.GetMin(self)¶ Returns the minimum of ‘x’, ‘y’ and ‘z’.
New in version S26.
- Returns
 A new vector with the minimum of ‘x’, ‘y’ and ‘z’.
- Return type
 
- 
Vector.GetMax(self)¶ Returns the maximum of ‘x’, ‘y’ and ‘z’.
New in version S26.
- Returns
 A new vector with the maximum of ‘x’, ‘y’ and ‘z’.
- Return type
 
- 
Vector.GetRightRotated(self, rots)¶ Returns a vector where the components have been rotated to the right (in the usual (x, y, z)-representation). E.g., with a value of 1 for rots, the result will be (z, x, y).
New in version S26.
- Parameters
 rots (int) – Number of rotations, may be negative. The result depends only on the number modulo 3.
- Returns
 A new rotated vector.
- Return type
 
- 
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.Abs(self)¶ Returns the vector with absolute value for each entry
New in version S26.
- Returns
 A new absolute vector.
- Return type
 
- 
Vector.Min(self, other)¶ Calculates the minimum of each component.
New in version S26.
- Parameters
 other (c4d.Vector) – The other vector.
- Returns
 The vector containing the minimum of each component.
- Return type
 
- 
Vector.Max(self, other)¶ Calculates the maximum of each component.
New in version S26.
- Parameters
 other (c4d.Vector) – The other vector.
- Returns
 The vector containing the maximum of each component.
- Return type
 
- 
Vector.SetMin(self, other)¶ Set the minimum of each component.
New in version S26.
- Parameters
 other (c4d.Vector) – The other vector.
- 
Vector.SetMax(self, other)¶ Set the maximum of each component.
New in version S26.
- Parameters
 other (c4d.Vector) – The other vector.
- 
Vector.GetAngle(self, other)¶ Calculates angle (in radians) between v1 and v2.
New in version S26.
- Parameters
 other (c4d.Vector) – The other vector.
- Returns
 The angle.
- Return type
 float
- 
Vector.Cross(self, v2)¶ Calculates the cross product of the vector and vector v2.
- Parameters
 v2 (c4d.Vector) – The other vector.
- Return type
 - Returns
 The result.
Static Methods Documentation
- 
static 
c4d.Vector.GetDistance(v1, v2)¶ Retrieve the distance between two vectors.
- Parameters
 v1 (c4d.Vector) – The first vector.
v2 (c4d.Vector) – The second vector.
- Returns
 the distance from v1 to v2.
- Return type
 float