Math Types & Utilities (mathutils)
This module provides access to math operations.
Note
Classes, methods and attributes that accept vectors also accept other numeric sequences, such as tuples, lists.
The mathutils
module provides the following classes:
import mathutils
from math import radians
vec = mathutils.Vector((1.0, 2.0, 3.0))
mat_rot = mathutils.Matrix.Rotation(radians(90.0), 4, 'X')
mat_trans = mathutils.Matrix.Translation(vec)
mat = mat_trans @ mat_rot
mat.invert()
mat3 = mat.to_3x3()
quat1 = mat.to_quaternion()
quat2 = mat3.to_quaternion()
quat_diff = quat1.rotation_difference(quat2)
print(quat_diff.angle)
- class mathutils.Color(rgb)
This object gives access to Colors in Blender.
Most colors returned by Blender APIs are in scene linear color space, as defined by the OpenColorIO configuration. The notable exception is user interface theming colors, which are in sRGB color space.
- Parameters:
rgb (3d vector) – (r, g, b) color values
import mathutils # color values are represented as RGB values from 0 - 1, this is blue col = mathutils.Color((0.0, 0.0, 1.0)) # as well as r/g/b attribute access you can adjust them by h/s/v col.s *= 0.5 # you can access its components by attribute or index print("Color R:", col.r) print("Color G:", col[1]) print("Color B:", col[-1]) print("Color HSV: %.2f, %.2f, %.2f", col[:]) # components of an existing color can be set col[:] = 0.0, 0.5, 1.0 # components of an existing color can use slice notation to get a tuple print("Values: %f, %f, %f" % col[:]) # colors can be added and subtracted col += mathutils.Color((0.25, 0.0, 0.0)) # Color can be multiplied, in this example color is scaled to 0-255 # can printed as integers print("Color: %d, %d, %d" % (col * 255.0)[:]) # This example prints the color as hexadecimal print("Hexadecimal: %.2x%.2x%.2x" % (int(col.r * 255), int(col.g * 255), int(col.b * 255)))
- copy()
Returns a copy of this color.
- Returns:
A copy of the color.
- Return type:
Note
use this to get a copy of a wrapped color with no reference to the original data.
- freeze()
Make this object immutable.
After this the object can be hashed, used in dictionaries & sets.
- Returns:
An instance of this object.
- from_aces_to_scene_linear()
Convert from ACES2065-1 linear to scene linear color space.
- Returns:
A color in scene linear color space.
- Return type:
- from_rec709_linear_to_scene_linear()
Convert from Rec.709 linear color space to scene linear color space.
- Returns:
A color in scene linear color space.
- Return type:
- from_scene_linear_to_aces()
Convert from scene linear to ACES2065-1 linear color space.
- Returns:
A color in ACES2065-1 linear color space.
- Return type:
- from_scene_linear_to_rec709_linear()
Convert from scene linear to Rec.709 linear color space.
- Returns:
A color in Rec.709 linear color space.
- Return type:
- from_scene_linear_to_srgb()
Convert from scene linear to sRGB color space.
- Returns:
A color in sRGB color space.
- Return type:
- from_scene_linear_to_xyz_d65()
Convert from scene linear to CIE XYZ (Illuminant D65) color space.
- Returns:
A color in XYZ color space.
- Return type:
- from_srgb_to_scene_linear()
Convert from sRGB to scene linear color space.
- Returns:
A color in scene linear color space.
- Return type:
- from_xyz_d65_to_scene_linear()
Convert from CIE XYZ (Illuminant D65) to scene linear color space.
- Returns:
A color in scene linear color space.
- Return type:
- b
Blue color channel.
- Type:
float
- g
Green color channel.
- Type:
float
- h
HSV Hue component in [0, 1].
- Type:
float
- hsv
HSV Values in [0, 1].
- Type:
float triplet
- is_frozen
True when this object has been frozen (read-only).
- Type:
boolean
- is_valid
True when the owner of this data is valid.
- Type:
boolean
- is_wrapped
True when this object wraps external data (read-only).
- Type:
boolean
- owner
The item this is wrapping or None (read-only).
- r
Red color channel.
- Type:
float
- s
HSV Saturation component in [0, 1].
- Type:
float
- v
HSV Value component in [0, 1].
- Type:
float
- class mathutils.Euler(angles, order='XYZ')
This object gives access to Eulers in Blender.
See also
Euler angles on Wikipedia.
- Parameters:
angles (3d vector) – Three angles, in radians.
order (str) – Optional order of the angles, a permutation of
XYZ
.
import mathutils import math # create a new euler with default axis rotation order eul = mathutils.Euler((0.0, math.radians(45.0), 0.0), 'XYZ') # rotate the euler eul.rotate_axis('Z', math.radians(10.0)) # you can access its components by attribute or index print("Euler X", eul.x) print("Euler Y", eul[1]) print("Euler Z", eul[-1]) # components of an existing euler can be set eul[:] = 1.0, 2.0, 3.0 # components of an existing euler can use slice notation to get a tuple print("Values: %f, %f, %f" % eul[:]) # the order can be set at any time too eul.order = 'ZYX' # eulers can be used to rotate vectors vec = mathutils.Vector((0.0, 0.0, 1.0)) vec.rotate(eul) # often its useful to convert the euler into a matrix so it can be used as # transformations with more flexibility mat_rot = eul.to_matrix() mat_loc = mathutils.Matrix.Translation((2.0, 3.0, 4.0)) mat = mat_loc @ mat_rot.to_4x4()
- copy()
Returns a copy of this euler.
- Returns:
A copy of the euler.
- Return type:
Note
use this to get a copy of a wrapped euler with no reference to the original data.
- freeze()
Make this object immutable.
After this the object can be hashed, used in dictionaries & sets.
- Returns:
An instance of this object.
- make_compatible(other)
Make this euler compatible with another, so interpolating between them works as intended.
Note
the rotation order is not taken into account for this function.
- rotate(other)
Rotates the euler by another mathutils value.
- Parameters:
other (
Euler
,Quaternion
orMatrix
) – rotation component of mathutils value
- rotate_axis(axis, angle)
Rotates the euler a certain amount and returning a unique euler rotation (no 720 degree pitches).
- Parameters:
axis (string) – single character in [‘X, ‘Y’, ‘Z’].
angle (float) – angle in radians.
- to_matrix()
Return a matrix representation of the euler.
- Returns:
A 3x3 rotation matrix representation of the euler.
- Return type:
- to_quaternion()
Return a quaternion representation of the euler.
- Returns:
Quaternion representation of the euler.
- Return type:
- zero()
Set all values to zero.
- is_frozen
True when this object has been frozen (read-only).
- Type:
boolean
- is_valid
True when the owner of this data is valid.
- Type:
boolean
- is_wrapped
True when this object wraps external data (read-only).
- Type:
boolean
- order
Euler rotation order.
- Type:
string in [‘XYZ’, ‘XZY’, ‘YXZ’, ‘YZX’, ‘ZXY’, ‘ZYX’]
- owner
The item this is wrapping or None (read-only).
- x
Euler axis angle in radians.
- Type:
float
- y
Euler axis angle in radians.
- Type:
float
- z
Euler axis angle in radians.
- Type:
float
- class mathutils.Matrix([rows])
This object gives access to Matrices in Blender, supporting square and rectangular matrices from 2x2 up to 4x4.
- Parameters:
rows (2d number sequence) – Sequence of rows. When omitted, a 4x4 identity matrix is constructed.
import mathutils import math # create a location matrix mat_loc = mathutils.Matrix.Translation((2.0, 3.0, 4.0)) # create an identitiy matrix mat_sca = mathutils.Matrix.Scale(0.5, 4, (0.0, 0.0, 1.0)) # create a rotation matrix mat_rot = mathutils.Matrix.Rotation(math.radians(45.0), 4, 'X') # combine transformations mat_out = mat_loc @ mat_rot @ mat_sca print(mat_out) # extract components back out of the matrix as two vectors and a quaternion loc, rot, sca = mat_out.decompose() print(loc, rot, sca) # recombine extracted components mat_out2 = mathutils.Matrix.LocRotScale(loc, rot, sca) print(mat_out2) # it can also be useful to access components of a matrix directly mat = mathutils.Matrix() mat[0][0], mat[1][0], mat[2][0] = 0.0, 1.0, 2.0 mat[0][0:3] = 0.0, 1.0, 2.0 # each item in a matrix is a vector so vector utility functions can be used mat[0].xyz = 0.0, 1.0, 2.0
- classmethod Diagonal(vector)
Create a diagonal (scaling) matrix using the values from the vector.
- classmethod Identity(size)
Create an identity matrix.
- Parameters:
size (int) – The size of the identity matrix to construct [2, 4].
- Returns:
A new identity matrix.
- Return type:
- classmethod LocRotScale(location, rotation, scale)
Create a matrix combining translation, rotation and scale, acting as the inverse of the decompose() method.
Any of the inputs may be replaced with None if not needed.
- Parameters:
location (
Vector
or None) – The translation component.rotation (3x3
Matrix
,Quaternion
,Euler
or None) – The rotation component.scale (
Vector
or None) – The scale component.
- Returns:
Combined transformation matrix.
- Return type:
4x4
Matrix
# Compute local object transformation matrix: if obj.rotation_mode == 'QUATERNION': matrix = mathutils.Matrix.LocRotScale(obj.location, obj.rotation_quaternion, obj.scale) else: matrix = mathutils.Matrix.LocRotScale(obj.location, obj.rotation_euler, obj.scale)
- classmethod OrthoProjection(axis, size)
Create a matrix to represent an orthographic projection.
- classmethod Rotation(angle, size, axis)
Create a matrix representing a rotation.
- classmethod Scale(factor, size, axis)
Create a matrix representing a scaling.
- classmethod Shear(plane, size, factor)
Create a matrix to represent an shear transformation.
- Parameters:
plane (string) – Can be any of the following: [‘X’, ‘Y’, ‘XY’, ‘XZ’, ‘YZ’], where a single axis is for a 2D matrix only.
size (int) – The size of the shear matrix to construct [2, 4].
factor (float or float pair) – The factor of shear to apply. For a 3 or 4 size matrix pass a pair of floats corresponding with the plane axis.
- Returns:
A new shear matrix.
- Return type:
- classmethod Translation(vector)
Create a matrix representing a translation.
- adjugate()
Set the matrix to its adjugate.
- Raises:
ValueError – if the matrix cannot be adjugate.
See also
Adjugate matrix on Wikipedia.
- adjugated()
Return an adjugated copy of the matrix.
- Returns:
the adjugated matrix.
- Return type:
- Raises:
ValueError – if the matrix cannot be adjugated
- decompose()
Return the translation, rotation, and scale components of this matrix.
- Returns:
tuple of translation, rotation, and scale
- Return type:
(
Vector
,Quaternion
,Vector
)
- determinant()
Return the determinant of a matrix.
- Returns:
Return the determinant of a matrix.
- Return type:
float
See also
Determinant on Wikipedia.
- freeze()
Make this object immutable.
After this the object can be hashed, used in dictionaries & sets.
- Returns:
An instance of this object.
- identity()
Set the matrix to the identity matrix.
Note
An object with a location and rotation of zero, and a scale of one will have an identity matrix.
See also
Identity matrix on Wikipedia.
- invert(fallback=None)
Set the matrix to its inverse.
- Parameters:
fallback (
Matrix
) – Set the matrix to this value when the inverse cannot be calculated (instead of raising aValueError
exception).
See also
Inverse matrix on Wikipedia.
- invert_safe()
Set the matrix to its inverse, will never error. If degenerated (e.g. zero scale on an axis), add some epsilon to its diagonal, to get an invertible one. If tweaked matrix is still degenerated, set to the identity matrix instead.
See also
Inverse Matrix on Wikipedia.
- inverted(fallback=None)
Return an inverted copy of the matrix.
- Parameters:
fallback (any) – return this when the inverse can’t be calculated (instead of raising a
ValueError
).- Returns:
the inverted matrix or fallback when given.
- Return type:
- inverted_safe()
Return an inverted copy of the matrix, will never error. If degenerated (e.g. zero scale on an axis), add some epsilon to its diagonal, to get an invertible one. If tweaked matrix is still degenerated, return the identity matrix instead.
- Returns:
the inverted matrix.
- Return type:
- lerp(other, factor)
Returns the interpolation of two matrices. Uses polar decomposition, see “Matrix Animation and Polar Decomposition”, Shoemake and Duff, 1992.
- normalize()
Normalize each of the matrix columns.
Note
for 4x4 matrices, the 4th column (translation) is left untouched.
- normalized()
Return a column normalized matrix
- Returns:
a column normalized matrix
- Return type:
Note
for 4x4 matrices, the 4th column (translation) is left untouched.
- resize_4x4()
Resize the matrix to 4x4.
- rotate(other)
Rotates the matrix by another mathutils value.
- Parameters:
other (
Euler
,Quaternion
orMatrix
) – rotation component of mathutils value
Note
If any of the columns are not unit length this may not have desired results.
- to_euler(order, euler_compat)
Return an Euler representation of the rotation matrix (3x3 or 4x4 matrix only).
- Parameters:
order (string) – Optional rotation order argument in [‘XYZ’, ‘XZY’, ‘YXZ’, ‘YZX’, ‘ZXY’, ‘ZYX’].
euler_compat (
Euler
) – Optional euler argument the new euler will be made compatible with (no axis flipping between them). Useful for converting a series of matrices to animation curves.
- Returns:
Euler representation of the matrix.
- Return type:
- to_quaternion()
Return a quaternion representation of the rotation matrix.
- Returns:
Quaternion representation of the rotation matrix.
- Return type:
- to_scale()
Return the scale part of a 3x3 or 4x4 matrix.
- Returns:
Return the scale of a matrix.
- Return type:
Note
This method does not return a negative scale on any axis because it is not possible to obtain this data from the matrix alone.
- to_translation()
Return the translation part of a 4 row matrix.
- Returns:
Return the translation of a matrix.
- Return type:
- col
Access the matrix by columns, 3x3 and 4x4 only, (read-only).
- Type:
Matrix Access
- is_frozen
True when this object has been frozen (read-only).
- Type:
boolean
- is_identity
True if this is an identity matrix (read-only).
- Type:
bool
- is_negative
True if this matrix results in a negative scale, 3x3 and 4x4 only, (read-only).
- Type:
bool
- is_orthogonal
True if this matrix is orthogonal, 3x3 and 4x4 only, (read-only).
- Type:
bool
- is_orthogonal_axis_vectors
True if this matrix has got orthogonal axis vectors, 3x3 and 4x4 only, (read-only).
- Type:
bool
- is_valid
True when the owner of this data is valid.
- Type:
boolean
- is_wrapped
True when this object wraps external data (read-only).
- Type:
boolean
- median_scale
The average scale applied to each axis (read-only).
- Type:
float
- owner
The item this is wrapping or None (read-only).
- row
Access the matrix by rows (default), (read-only).
- Type:
Matrix Access
- class mathutils.Quaternion([seq[, angle]])
This object gives access to Quaternions in Blender.
- Parameters:
seq (
Vector
) – size 3 or 4angle (float) – rotation angle, in radians
The constructor takes arguments in various forms:
- (), no args
Create an identity quaternion
- (wxyz)
Create a quaternion from a
(w, x, y, z)
vector.- (exponential_map)
Create a quaternion from a 3d exponential map vector.
See also
- (axis, angle)
Create a quaternion representing a rotation of angle radians over axis.
See also
import mathutils import math # a new rotation 90 degrees about the Y axis quat_a = mathutils.Quaternion((0.7071068, 0.0, 0.7071068, 0.0)) # passing values to Quaternion's directly can be confusing so axis, angle # is supported for initializing too quat_b = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0)) print("Check quaternions match", quat_a == quat_b) # like matrices, quaternions can be multiplied to accumulate rotational values quat_a = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0)) quat_b = mathutils.Quaternion((0.0, 0.0, 1.0), math.radians(45.0)) quat_out = quat_a @ quat_b # print the quat, euler degrees for mere mortals and (axis, angle) print("Final Rotation:") print(quat_out) print("%.2f, %.2f, %.2f" % tuple(math.degrees(a) for a in quat_out.to_euler())) print("(%.2f, %.2f, %.2f), %.2f" % (quat_out.axis[:] + (math.degrees(quat_out.angle), ))) # multiple rotations can be interpolated using the exponential map quat_c = mathutils.Quaternion((1.0, 0.0, 0.0), math.radians(15.0)) exp_avg = (quat_a.to_exponential_map() + quat_b.to_exponential_map() + quat_c.to_exponential_map()) / 3.0 quat_avg = mathutils.Quaternion(exp_avg) print("Average rotation:") print(quat_avg)
- conjugate()
Set the quaternion to its conjugate (negate x, y, z).
- conjugated()
Return a new conjugated quaternion.
- Returns:
a new quaternion.
- Return type:
- copy()
Returns a copy of this quaternion.
- Returns:
A copy of the quaternion.
- Return type:
Note
use this to get a copy of a wrapped quaternion with no reference to the original data.
- cross(other)
Return the cross product of this quaternion and another.
- Parameters:
other (
Quaternion
) – The other quaternion to perform the cross product with.- Returns:
The cross product.
- Return type:
- dot(other)
Return the dot product of this quaternion and another.
- Parameters:
other (
Quaternion
) – The other quaternion 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.
- identity()
Set the quaternion to an identity quaternion.
- Return type:
- invert()
Set the quaternion to its inverse.
- inverted()
Return a new, inverted quaternion.
- Returns:
the inverted value.
- Return type:
- make_compatible(other)
Make this quaternion compatible with another, so interpolating between them works as intended.
- negate()
Set the quaternion to its negative.
- Return type:
- normalize()
Normalize the quaternion.
- normalized()
Return a new normalized quaternion.
- Returns:
a normalized copy.
- Return type:
- rotate(other)
Rotates the quaternion by another mathutils value.
- Parameters:
other (
Euler
,Quaternion
orMatrix
) – rotation component of mathutils value
- rotation_difference(other)
Returns a quaternion representing the rotational difference.
- Parameters:
other (
Quaternion
) – second quaternion.- Returns:
the rotational difference between the two quat rotations.
- Return type:
- slerp(other, factor)
Returns the interpolation of two quaternions.
- Parameters:
other (
Quaternion
) – value to interpolate with.factor (float) – The interpolation value in [0.0, 1.0].
- Returns:
The interpolated rotation.
- Return type:
- to_axis_angle()
Return the axis, angle representation of the quaternion.
- Returns:
axis, angle.
- Return type:
(
Vector
, float) pair
- to_euler(order, euler_compat)
Return Euler representation of the quaternion.
- Parameters:
order (string) – Optional rotation order argument in [‘XYZ’, ‘XZY’, ‘YXZ’, ‘YZX’, ‘ZXY’, ‘ZYX’].
euler_compat (
Euler
) – Optional euler argument the new euler will be made compatible with (no axis flipping between them). Useful for converting a series of matrices to animation curves.
- Returns:
Euler representation of the quaternion.
- Return type:
- to_exponential_map()
Return the exponential map representation of the quaternion.
This representation consist of the rotation axis multiplied by the rotation angle. Such a representation is useful for interpolation between multiple orientations.
- Returns:
exponential map.
- Return type:
Vector
of size 3
To convert back to a quaternion, pass it to the
Quaternion
constructor.
- to_matrix()
Return a matrix representation of the quaternion.
- Returns:
A 3x3 rotation matrix representation of the quaternion.
- Return type:
- to_swing_twist(axis)
Split the rotation into a swing quaternion with the specified axis fixed at zero, and the remaining twist rotation angle.
- Parameters:
axis – twist axis as a string in [‘X’, ‘Y’, ‘Z’]
- Returns:
swing, twist angle.
- Return type:
(
Quaternion
, float) pair
- angle
Angle of the quaternion.
- Type:
float
- is_frozen
True when this object has been frozen (read-only).
- Type:
boolean
- is_valid
True when the owner of this data is valid.
- Type:
boolean
- is_wrapped
True when this object wraps external data (read-only).
- Type:
boolean
- magnitude
Size of the quaternion (read-only).
- Type:
float
- owner
The item this is wrapping or None (read-only).
- w
Quaternion axis value.
- Type:
float
- x
Quaternion axis value.
- Type:
float
- y
Quaternion axis value.
- Type:
float
- z
Quaternion axis value.
- Type:
float
- class mathutils.Vector(seq)
This object gives access to Vectors in Blender.
- Parameters:
seq (sequence of numbers) – Components of the vector, must be a sequence of at least two
import mathutils # zero length vector vec = mathutils.Vector((0.0, 0.0, 1.0)) # unit length vector vec_a = vec.normalized() vec_b = mathutils.Vector((0.0, 1.0, 2.0)) vec2d = mathutils.Vector((1.0, 2.0)) vec3d = mathutils.Vector((1.0, 0.0, 0.0)) vec4d = vec_a.to_4d() # other mathutuls types quat = mathutils.Quaternion() matrix = mathutils.Matrix() # Comparison operators can be done on Vector classes: # (In)equality operators == and != test component values, e.g. 1,2,3 != 3,2,1 vec_a == vec_b vec_a != vec_b # Ordering operators >, >=, > and <= test vector length. vec_a > vec_b vec_a >= vec_b vec_a < vec_b vec_a <= vec_b # Math can be performed on Vector classes vec_a + vec_b vec_a - vec_b vec_a @ vec_b vec_a * 10.0 matrix @ vec_a quat @ vec_a -vec_a # You can access a vector object like a sequence x = vec_a[0] len(vec) vec_a[:] = vec_b vec_a[:] = 1.0, 2.0, 3.0 vec2d[:] = vec3d[:2] # Vectors support 'swizzle' operations # See https://en.wikipedia.org/wiki/Swizzling_(computer_graphics) vec.xyz = vec.zyx vec.xy = vec4d.zw vec.xyz = vec4d.wzz vec4d.wxyz = vec.yxyx
- classmethod Fill(size, fill=0.0)
Create a vector of length size with all values set to fill.
- Parameters:
size (int) – The length of the vector to be created.
fill (float) – The value used to fill the vector.
- classmethod Linspace(start, stop, size)
Create a vector of the specified size which is filled with linearly spaced values between start and stop values.
- Parameters:
start (int) – The start of the range used to fill the vector.
stop (int) – The end of the range used to fill the vector.
size (int) – The size of the vector to be created.
- classmethod Range(start, stop, step=1)
Create a filled with a range of values.
- Parameters:
start (int) – The start of the range used to fill the vector.
stop (int) – The end of the range used to fill the vector.
step (int) – The step 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:
tuple (
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
) – another vector to compare the angle withfallback (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
- angle_signed(other, fallback)
Return the signed angle between two 2D vectors (clockwise is positive).
- Parameters:
other (
Vector
) – another vector to compare the angle withfallback (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
- copy()
Returns a copy of this vector.
- Returns:
A copy of the vector.
- Return type:
Note
use this to get a copy of a wrapped vector with no reference to the original data.
- cross(other)
Return the cross product of this vector and another.
- Parameters:
other (
Vector
) – The other vector to perform the cross product with.- Returns:
The cross product.
- Return type:
Vector
or float when 2D vectors are used
Note
both vectors must be 2D or 3D
- dot(other)
Return the dot product of this vector and another.
- Parameters:
other (
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.
- negate()
Set all values to their negative.
- normalize()
Normalize the vector, making the length of the vector always 1.0.
Warning
Normalizing a vector where all values are zero has no effect.
Note
Normalize works for vectors of all sizes, however 4D Vectors w axis is left untouched.
- normalized()
Return a new, normalized vector.
- Returns:
a normalized copy of the vector
- Return type:
- orthogonal()
Return a perpendicular vector.
- Returns:
a new vector 90 degrees from this vector.
- Return type:
Note
the axis is undefined, only use when any orthogonal vector is acceptable.
- project(other)
Return the projection of this vector onto the other.
- reflect(mirror)
Return the reflection vector from the mirror argument.
- resize(size=3)
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=3)
Return a resized copy of the vector with size number of elements.
- Returns:
a new vector
- Return type:
- rotate(other)
Rotate the vector by a rotation value.
Note
2D vectors are a special case that can only be rotated by a 2x2 matrix.
- Parameters:
other (
Euler
,Quaternion
orMatrix
) – rotation component of mathutils value
- rotation_difference(other)
Returns a quaternion representing the rotational difference between this vector and another.
- Parameters:
other (
Vector
) – second vector.- Returns:
the rotational difference between the two vectors.
- Return type:
Note
2D vectors raise an
AttributeError
.
- slerp(other, factor, fallback=None)
Returns the interpolation of two non-zero vectors (spherical coordinates).
- Parameters:
other (
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:
- to_track_quat(track, up)
Return a quaternion rotation from the vector and the track and up axis.
- Parameters:
track (string) – Track axis in [‘X’, ‘Y’, ‘Z’, ‘-X’, ‘-Y’, ‘-Z’].
up (string) – Up axis in [‘X’, ‘Y’, ‘Z’].
- Returns:
rotation from the vector and the track and up axis.
- Return type:
- to_tuple(precision=-1)
Return this vector as a tuple with.
- 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
- zero()
Set all values to zero.
- is_frozen
True when this object has been frozen (read-only).
- Type:
boolean
- is_valid
True when the owner of this data is valid.
- Type:
boolean
- is_wrapped
True when this object wraps external data (read-only).
- Type:
boolean
- 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
Undocumented, consider contributing.
- www
Undocumented, consider contributing.
- wwww
Undocumented, consider contributing.
- wwwx
Undocumented, consider contributing.
- wwwy
Undocumented, consider contributing.
- wwwz
Undocumented, consider contributing.
- wwx
Undocumented, consider contributing.
- wwxw
Undocumented, consider contributing.
- wwxx
Undocumented, consider contributing.
- wwxy
Undocumented, consider contributing.
- wwxz
Undocumented, consider contributing.
- wwy
Undocumented, consider contributing.
- wwyw
Undocumented, consider contributing.
- wwyx
Undocumented, consider contributing.
- wwyy
Undocumented, consider contributing.
- wwyz
Undocumented, consider contributing.
- wwz
Undocumented, consider contributing.
- wwzw
Undocumented, consider contributing.
- wwzx
Undocumented, consider contributing.
- wwzy
Undocumented, consider contributing.
- wwzz
Undocumented, consider contributing.
- wx
Undocumented, consider contributing.
- wxw
Undocumented, consider contributing.
- wxww
Undocumented, consider contributing.
- wxwx
Undocumented, consider contributing.
- wxwy
Undocumented, consider contributing.
- wxwz
Undocumented, consider contributing.
- wxx
Undocumented, consider contributing.
- wxxw
Undocumented, consider contributing.
- wxxx
Undocumented, consider contributing.
- wxxy
Undocumented, consider contributing.
- wxxz
Undocumented, consider contributing.
- wxy
Undocumented, consider contributing.
- wxyw
Undocumented, consider contributing.
- wxyx
Undocumented, consider contributing.
- wxyy
Undocumented, consider contributing.
- wxyz
Undocumented, consider contributing.
- wxz
Undocumented, consider contributing.
- wxzw
Undocumented, consider contributing.
- wxzx
Undocumented, consider contributing.
- wxzy
Undocumented, consider contributing.
- wxzz
Undocumented, consider contributing.
- wy
Undocumented, consider contributing.
- wyw
Undocumented, consider contributing.
- wyww
Undocumented, consider contributing.
- wywx
Undocumented, consider contributing.
- wywy
Undocumented, consider contributing.
- wywz
Undocumented, consider contributing.
- wyx
Undocumented, consider contributing.
- wyxw
Undocumented, consider contributing.
- wyxx
Undocumented, consider contributing.
- wyxy
Undocumented, consider contributing.
- wyxz
Undocumented, consider contributing.
- wyy
Undocumented, consider contributing.
- wyyw
Undocumented, consider contributing.
- wyyx
Undocumented, consider contributing.
- wyyy
Undocumented, consider contributing.
- wyyz
Undocumented, consider contributing.
- wyz
Undocumented, consider contributing.
- wyzw
Undocumented, consider contributing.
- wyzx
Undocumented, consider contributing.
- wyzy
Undocumented, consider contributing.
- wyzz
Undocumented, consider contributing.
- wz
Undocumented, consider contributing.
- wzw
Undocumented, consider contributing.
- wzww
Undocumented, consider contributing.
- wzwx
Undocumented, consider contributing.
- wzwy
Undocumented, consider contributing.
- wzwz
Undocumented, consider contributing.
- wzx
Undocumented, consider contributing.
- wzxw
Undocumented, consider contributing.
- wzxx
Undocumented, consider contributing.
- wzxy
Undocumented, consider contributing.
- wzxz
Undocumented, consider contributing.
- wzy
Undocumented, consider contributing.
- wzyw
Undocumented, consider contributing.
- wzyx
Undocumented, consider contributing.
- wzyy
Undocumented, consider contributing.
- wzyz
Undocumented, consider contributing.
- wzz
Undocumented, consider contributing.
- wzzw
Undocumented, consider contributing.
- wzzx
Undocumented, consider contributing.
- wzzy
Undocumented, consider contributing.
- wzzz
Undocumented, consider contributing.
- x
Vector X axis.
- Type:
float
- xw
Undocumented, consider contributing.
- xww
Undocumented, consider contributing.
- xwww
Undocumented, consider contributing.
- xwwx
Undocumented, consider contributing.
- xwwy
Undocumented, consider contributing.
- xwwz
Undocumented, consider contributing.
- xwx
Undocumented, consider contributing.
- xwxw
Undocumented, consider contributing.
- xwxx
Undocumented, consider contributing.
- xwxy
Undocumented, consider contributing.
- xwxz
Undocumented, consider contributing.
- xwy
Undocumented, consider contributing.
- xwyw
Undocumented, consider contributing.
- xwyx
Undocumented, consider contributing.
- xwyy
Undocumented, consider contributing.
- xwyz
Undocumented, consider contributing.
- xwz
Undocumented, consider contributing.
- xwzw
Undocumented, consider contributing.
- xwzx
Undocumented, consider contributing.
- xwzy
Undocumented, consider contributing.
- xwzz
Undocumented, consider contributing.
- xx
Undocumented, consider contributing.
- xxw
Undocumented, consider contributing.
- xxww
Undocumented, consider contributing.
- xxwx
Undocumented, consider contributing.
- xxwy
Undocumented, consider contributing.
- xxwz
Undocumented, consider contributing.
- xxx
Undocumented, consider contributing.
- xxxw
Undocumented, consider contributing.
- xxxx
Undocumented, consider contributing.
- xxxy
Undocumented, consider contributing.
- xxxz
Undocumented, consider contributing.
- xxy
Undocumented, consider contributing.
- xxyw
Undocumented, consider contributing.
- xxyx
Undocumented, consider contributing.
- xxyy
Undocumented, consider contributing.
- xxyz
Undocumented, consider contributing.
- xxz
Undocumented, consider contributing.
- xxzw
Undocumented, consider contributing.
- xxzx
Undocumented, consider contributing.
- xxzy
Undocumented, consider contributing.
- xxzz
Undocumented, consider contributing.
- xy
Undocumented, consider contributing.
- xyw
Undocumented, consider contributing.
- xyww
Undocumented, consider contributing.
- xywx
Undocumented, consider contributing.
- xywy
Undocumented, consider contributing.
- xywz
Undocumented, consider contributing.
- xyx
Undocumented, consider contributing.
- xyxw
Undocumented, consider contributing.
- xyxx
Undocumented, consider contributing.
- xyxy
Undocumented, consider contributing.
- xyxz
Undocumented, consider contributing.
- xyy
Undocumented, consider contributing.
- xyyw
Undocumented, consider contributing.
- xyyx
Undocumented, consider contributing.
- xyyy
Undocumented, consider contributing.
- xyyz
Undocumented, consider contributing.
- xyz
Undocumented, consider contributing.
- xyzw
Undocumented, consider contributing.
- xyzx
Undocumented, consider contributing.
- xyzy
Undocumented, consider contributing.
- xyzz
Undocumented, consider contributing.
- xz
Undocumented, consider contributing.
- xzw
Undocumented, consider contributing.
- xzww
Undocumented, consider contributing.
- xzwx
Undocumented, consider contributing.
- xzwy
Undocumented, consider contributing.
- xzwz
Undocumented, consider contributing.
- xzx
Undocumented, consider contributing.
- xzxw
Undocumented, consider contributing.
- xzxx
Undocumented, consider contributing.
- xzxy
Undocumented, consider contributing.
- xzxz
Undocumented, consider contributing.
- xzy
Undocumented, consider contributing.
- xzyw
Undocumented, consider contributing.
- xzyx
Undocumented, consider contributing.
- xzyy
Undocumented, consider contributing.
- xzyz
Undocumented, consider contributing.
- xzz
Undocumented, consider contributing.
- xzzw
Undocumented, consider contributing.
- xzzx
Undocumented, consider contributing.
- xzzy
Undocumented, consider contributing.
- xzzz
Undocumented, consider contributing.
- y
Vector Y axis.
- Type:
float
- yw
Undocumented, consider contributing.
- yww
Undocumented, consider contributing.
- ywww
Undocumented, consider contributing.
- ywwx
Undocumented, consider contributing.
- ywwy
Undocumented, consider contributing.
- ywwz
Undocumented, consider contributing.
- ywx
Undocumented, consider contributing.
- ywxw
Undocumented, consider contributing.
- ywxx
Undocumented, consider contributing.
- ywxy
Undocumented, consider contributing.
- ywxz
Undocumented, consider contributing.
- ywy
Undocumented, consider contributing.
- ywyw
Undocumented, consider contributing.
- ywyx
Undocumented, consider contributing.
- ywyy
Undocumented, consider contributing.
- ywyz
Undocumented, consider contributing.
- ywz
Undocumented, consider contributing.
- ywzw
Undocumented, consider contributing.
- ywzx
Undocumented, consider contributing.
- ywzy
Undocumented, consider contributing.
- ywzz
Undocumented, consider contributing.
- yx
Undocumented, consider contributing.
- yxw
Undocumented, consider contributing.
- yxww
Undocumented, consider contributing.
- yxwx
Undocumented, consider contributing.
- yxwy
Undocumented, consider contributing.
- yxwz
Undocumented, consider contributing.
- yxx
Undocumented, consider contributing.
- yxxw
Undocumented, consider contributing.
- yxxx
Undocumented, consider contributing.
- yxxy
Undocumented, consider contributing.
- yxxz
Undocumented, consider contributing.
- yxy
Undocumented, consider contributing.
- yxyw
Undocumented, consider contributing.
- yxyx
Undocumented, consider contributing.
- yxyy
Undocumented, consider contributing.
- yxyz
Undocumented, consider contributing.
- yxz
Undocumented, consider contributing.
- yxzw
Undocumented, consider contributing.
- yxzx
Undocumented, consider contributing.
- yxzy
Undocumented, consider contributing.
- yxzz
Undocumented, consider contributing.
- yy
Undocumented, consider contributing.
- yyw
Undocumented, consider contributing.
- yyww
Undocumented, consider contributing.
- yywx
Undocumented, consider contributing.
- yywy
Undocumented, consider contributing.
- yywz
Undocumented, consider contributing.
- yyx
Undocumented, consider contributing.
- yyxw
Undocumented, consider contributing.
- yyxx
Undocumented, consider contributing.
- yyxy
Undocumented, consider contributing.
- yyxz
Undocumented, consider contributing.
- yyy
Undocumented, consider contributing.
- yyyw
Undocumented, consider contributing.
- yyyx
Undocumented, consider contributing.
- yyyy
Undocumented, consider contributing.
- yyyz
Undocumented, consider contributing.
- yyz
Undocumented, consider contributing.
- yyzw
Undocumented, consider contributing.
- yyzx
Undocumented, consider contributing.
- yyzy
Undocumented, consider contributing.
- yyzz
Undocumented, consider contributing.
- yz
Undocumented, consider contributing.
- yzw
Undocumented, consider contributing.
- yzww
Undocumented, consider contributing.
- yzwx
Undocumented, consider contributing.
- yzwy
Undocumented, consider contributing.
- yzwz
Undocumented, consider contributing.
- yzx
Undocumented, consider contributing.
- yzxw
Undocumented, consider contributing.
- yzxx
Undocumented, consider contributing.
- yzxy
Undocumented, consider contributing.
- yzxz
Undocumented, consider contributing.
- yzy
Undocumented, consider contributing.
- yzyw
Undocumented, consider contributing.
- yzyx
Undocumented, consider contributing.
- yzyy
Undocumented, consider contributing.
- yzyz
Undocumented, consider contributing.
- yzz
Undocumented, consider contributing.
- yzzw
Undocumented, consider contributing.
- yzzx
Undocumented, consider contributing.
- yzzy
Undocumented, consider contributing.
- yzzz
Undocumented, consider contributing.
- z
Vector Z axis (3D Vectors only).
- Type:
float
- zw
Undocumented, consider contributing.
- zww
Undocumented, consider contributing.
- zwww
Undocumented, consider contributing.
- zwwx
Undocumented, consider contributing.
- zwwy
Undocumented, consider contributing.
- zwwz
Undocumented, consider contributing.
- zwx
Undocumented, consider contributing.
- zwxw
Undocumented, consider contributing.
- zwxx
Undocumented, consider contributing.
- zwxy
Undocumented, consider contributing.
- zwxz
Undocumented, consider contributing.
- zwy
Undocumented, consider contributing.
- zwyw
Undocumented, consider contributing.
- zwyx
Undocumented, consider contributing.
- zwyy
Undocumented, consider contributing.
- zwyz
Undocumented, consider contributing.
- zwz
Undocumented, consider contributing.
- zwzw
Undocumented, consider contributing.
- zwzx
Undocumented, consider contributing.
- zwzy
Undocumented, consider contributing.
- zwzz
Undocumented, consider contributing.
- zx
Undocumented, consider contributing.
- zxw
Undocumented, consider contributing.
- zxww
Undocumented, consider contributing.
- zxwx
Undocumented, consider contributing.
- zxwy
Undocumented, consider contributing.
- zxwz
Undocumented, consider contributing.
- zxx
Undocumented, consider contributing.
- zxxw
Undocumented, consider contributing.
- zxxx
Undocumented, consider contributing.
- zxxy
Undocumented, consider contributing.
- zxxz
Undocumented, consider contributing.
- zxy
Undocumented, consider contributing.
- zxyw
Undocumented, consider contributing.
- zxyx
Undocumented, consider contributing.
- zxyy
Undocumented, consider contributing.
- zxyz
Undocumented, consider contributing.
- zxz
Undocumented, consider contributing.
- zxzw
Undocumented, consider contributing.
- zxzx
Undocumented, consider contributing.
- zxzy
Undocumented, consider contributing.
- zxzz
Undocumented, consider contributing.
- zy
Undocumented, consider contributing.
- zyw
Undocumented, consider contributing.
- zyww
Undocumented, consider contributing.
- zywx
Undocumented, consider contributing.
- zywy
Undocumented, consider contributing.
- zywz
Undocumented, consider contributing.
- zyx
Undocumented, consider contributing.
- zyxw
Undocumented, consider contributing.
- zyxx
Undocumented, consider contributing.
- zyxy
Undocumented, consider contributing.
- zyxz
Undocumented, consider contributing.
- zyy
Undocumented, consider contributing.
- zyyw
Undocumented, consider contributing.
- zyyx
Undocumented, consider contributing.
- zyyy
Undocumented, consider contributing.
- zyyz
Undocumented, consider contributing.
- zyz
Undocumented, consider contributing.
- zyzw
Undocumented, consider contributing.
- zyzx
Undocumented, consider contributing.
- zyzy
Undocumented, consider contributing.
- zyzz
Undocumented, consider contributing.
- zz
Undocumented, consider contributing.
- zzw
Undocumented, consider contributing.
- zzww
Undocumented, consider contributing.
- zzwx
Undocumented, consider contributing.
- zzwy
Undocumented, consider contributing.
- zzwz
Undocumented, consider contributing.
- zzx
Undocumented, consider contributing.
- zzxw
Undocumented, consider contributing.
- zzxx
Undocumented, consider contributing.
- zzxy
Undocumented, consider contributing.
- zzxz
Undocumented, consider contributing.
- zzy
Undocumented, consider contributing.
- zzyw
Undocumented, consider contributing.
- zzyx
Undocumented, consider contributing.
- zzyy
Undocumented, consider contributing.
- zzyz
Undocumented, consider contributing.
- zzz
Undocumented, consider contributing.
- zzzw
Undocumented, consider contributing.
- zzzx
Undocumented, consider contributing.
- zzzy
Undocumented, consider contributing.
- zzzz
Undocumented, consider contributing.