Welcome to Python-flavored Magnum! Please note that, while already being rather stable, this functionality is still considered experimental and some APIs might get changed without preserving full backwards compatibility.

magnum.Vector3d class

Three-component double vector

Static methods

def x_axis(length: float = 1.0) -> Vector3d
Vector in a direction of X axis (right)
def x_scale(scale: float) -> Vector3d
Scaling vector in a direction of X axis (width)
def y_axis(length: float = 1.0) -> Vector3d
Vector in a direction of Y axis (up)
def y_scale(scale: float) -> Vector3d
Scaling vector in a direction of Y axis (height)
def z_axis(length: float = 1.0) -> Vector3d
Vector in a direction of Z axis (backward)
def z_scale(scale: float) -> Vector3d
Scaling vector in a direction of Z axis (depth)
def zero_init() -> Vector3d
Construct a zero vector

Methods

def dot(self, /) -> float
Dot product of the vector
def flipped(self, /) -> Vector3d
Flipped vector
def is_normalized(self, /) -> bool
Whether the vector is normalized
def is_zero(self, /) -> bool
Whether the vector is zero
def length(self, /) -> float
Vector length
def length_inverted(self, /) -> float
Inverse vector length
def max(self, /) -> float
Maximal value in the vector
def min(self, /) -> float
Minimal value in the vector
def minmax(self, /) -> tuple[float, float]
Minimal and maximal value in the vector
def normalized(self, /) -> Vector3d
Normalized vector (of unit length)
def product(self, /) -> float
Product of values in the vector
def projected(self, line: Vector3d) -> Vector3d
Vector projected onto a line
def projected_onto_normalized(self, line: Vector3d) -> Vector3d
Vector projected onto a normalized line
def resized(self, length: float) -> Vector3d
Resized vector
def sum(self, /) -> float
Sum of values in the vector

Special methods

def __add__(self, arg0: Vector3d, /) -> Vector3d
Add a vector
def __buffer__(self, flags, /)
Return a buffer object that exposes the underlying memory of the object.
def __eq__(self, arg0: Vector3d, /) -> bool
Equality comparison
def __ge__(self, arg0: Vector3d, /) -> BitVector3
Component-wise greater than or equal comparison
def __getattr__(self, arg0: str, /) -> object
Vector swizzle
def __getitem__(self, arg0: int, /) -> float
Value at given position
def __getstate__(self, /) -> bytes
Dumps the in-memory representation of vector components
def __gt__(self, arg0: Vector3d, /) -> BitVector3
Component-wise greater than comparison
def __iadd__(self, arg0: Vector3d, /) -> Vector3d
Add and assign a vector
def __imul__(self, arg0: float, /) -> Vector3d
Multiply with a scalar and assign
def __imul__(self, arg0: Vector3d, /) -> Vector3d
Multiply a vector component-wise and assign
def __init__(self, arg0: Vector3ui, /) -> None
Construct from different underlying type
def __init__(self, arg0: Vector3i, /) -> None
Construct from different underlying type
def __init__(self, arg0: Vector3, /) -> None
Construct from different underlying type
def __init__(self, arg0: Buffer, /) -> None
Construct from a buffer
def __init__(self, /) -> None
Default constructor
def __init__(self, arg0: float, /) -> None
Construct a vector with one value for all components
def __init__(self, arg0: float, arg1: float, arg2: float, /) -> None
Constructor
def __init__(self, arg0: Vector2d, arg1: float, /) -> None
Constructor
def __init__(self, arg0: tuple[float, float, float], /) -> None
Construct from a tuple
def __isub__(self, arg0: Vector3d, /) -> Vector3d
Subtract and assign a vector
def __itruediv__(self, arg0: float, /) -> Vector3d
Divide with a scalar and assign
def __itruediv__(self, arg0: Vector3d, /) -> Vector3d
Divide a vector component-wise and assign
def __le__(self, arg0: Vector3d, /) -> BitVector3
Component-wise less than or equal comparison
def __len__() -> int
Vector size. Returns 3.
def __lt__(self, arg0: Vector3d, /) -> BitVector3
Component-wise less than comparison
def __mul__(self, arg0: float, /) -> Vector3d
Multiply with a scalar
def __mul__(self, arg0: Vector3d, /) -> Vector3d
Multiply a vector component-wise
def __ne__(self, arg0: Vector3d, /) -> bool
Non-equality comparison
def __neg__(self, /) -> Vector3d
Negated vector
def __release_buffer__(self, buffer, /)
Release the buffer object that exposes the underlying memory of the object.
def __repr__(self, /) -> str
Object representation
def __rmul__(self, arg0: float, /) -> Vector3d
Multiply a scalar with a vector
def __rtruediv__(self, arg0: float, /) -> Vector3d
Divide a vector with a scalar and invert
def __setattr__(self, arg0: str, arg1: object, /) -> None
Vector swizzle
def __setitem__(self, arg0: int, arg1: float, /) -> None
Set a value at given position
def __setstate__(self, arg0: bytes, /) -> None
Treats the data as the in-memory representation of vector components
def __sub__(self, arg0: Vector3d, /) -> Vector3d
Subtract a vector
def __truediv__(self, arg0: float, /) -> Vector3d
Divide with a scalar
def __truediv__(self, arg0: Vector3d, /) -> Vector3d
Divide a vector component-wise

Properties

b: float get set
B component
g: float get set
G component
r: float get set
R component
x: float get set
X component
xy: Vector2d get set
XY part of the vector
y: float get set
Y component
z: float get set
Z component

Method documentation

def magnum.Vector3d.projected_onto_normalized(self, line: Vector3d) -> Vector3d

Vector projected onto a normalized line

Exceptions
ValueError If line is not normalized

def magnum.Vector3d.__setstate__(self, arg0: bytes, /) -> None

Treats the data as the in-memory representation of vector components

Exceptions
ValueError If the data size doesn’t match type size