class Vec3(x: float = 0, y: float = 0, z: float = 0)

Vec3 is a 3-dimensional vector for representing x, y and z coordinates. Each instance of this class is frozen, so calculations on it yield new instances of Vec3 instead of changing the x, y and z values directly.

x: float
y: float
z: float
classmethod from_yaw_pitch(yaw: int | float = 0, pitch: int | float = 0) Vec3

Build direction unit-vector from yaw and pitch values. This translate the in-Minecraft yaw and pitch values of entities or players (in which direction they are looking) into directional unit-vectors.

  • yaw: -180..179.99 (-180/180 north, -90 east, 0 south, 90 west)

  • pitch: -90..90 (-90 up, 0 straight, 90 down)

yaw_pitch() tuple[float, float]

The yaw and pitch values from self as directional vector. This translates directional unit-vectors into in-Minecraft yaw and pitch values used by entities or players (in which direction they are looking).

  • yaw: -180..179.99 (-180 north, -90 east, 0 south, 90 west)

  • pitch: -90..90 (-90 up, 0 straight, 90 down)

__add__(v: Vec3 | int | float) Vec3

Vector addition or add scalar to x, y and z

__sub__(v: Vec3 | int | float) Vec3

Vector subtraction or subtract scalar from x, y and z

__mul__(v: Vec3 | int | float) Vec3

Scalar multiplication or equiavalent to multiply_elementwise()

__truediv__(v: int | float) Vec3

Equivalent to multiplying x, y and z with 1.0 / v

length() float

The (absolute) length of vector self, equivalent to abs(self)

distance(v: Vec3) float

The distance between self and another point-vector v

angle(v: Vec3) float

Get the angle between self and v in degrees (0 <= theta <= 180)

angle_rad(v: Vec3) float

Get the angle between self and v in radians (0 <= theta <= pi)

dot(v: Vec3) float

The dot product between self and v, equivalent to self ^ v

cross(v: Vec3) Vec3

The cross product between self and v, equivalent to self @ v

multiply_elementwise(v: Vec3) Vec3

The element-wise multiplicated vector of self and v, equivalent to self * v

norm() Vec3

self as a normalized unit-vector with length 1

map(func: Callable[[int | float], int | float]) Vec3

A vector with func applied to x, y and z of self as arguments

map_pairwise(func: Callable[[int | float, int | float], int | float], v: Vec3) Vec3

A vector with func applied to each x, y and z of both self and v as arguments

rotate(v: Vec3, degree: float) Vec3

Rotate self around vector v by degree degrees

rotate_rad(v: Vec3, phi: float) Vec3

Rotate self around vector v by phi degree radians - Rodrigues rotation

round(ndigits: int = 0) Vec3

Round x, y and z to the ndigits comma digit

floor() Vec3

Round x, y and z down to the nearest integer

ceil() Vec3

Round x, y and z up to the nearest integer

trunc() Vec3

Leave only the integer part of x, y and z

asdict() dict[str, int | float]

x, y and z in a dictionary

closest_axis() Vec3

A vector with only the longest (most significant) axis remaining

direction_label() Literal['east', 'south', 'west', 'north', 'up', 'down']

The direction of the longest (most significant) axis

cardinal_label() Literal['east', 'south', 'west', 'north']

The direction of the longest (most significant) cardinal axis

east(n: int | float = 1) Vec3

Equivalent to self.addX(n)

west(n: int | float = 1) Vec3

Equivalent to self.addX(-n)

up(n: int | float = 1) Vec3

Equivalent to self.addY(n)

down(n: int | float = 1) Vec3

Equivalent to self.addY(-n)

south(n: int | float = 1) Vec3

Equivalent to self.addZ(n)

north(n: int | float = 1) Vec3

Equivalent to self.addZ(-n)

addX(n: int | float = 1) Vec3

self with n added to x, equivalent to self + Vec3(n, 0, 0)

addY(n: int | float = 1) Vec3

self with n added to y, equivalent to self + Vec3(0, n, 0)

addZ(n: int | float = 1) Vec3

self with n added to z, equivalent to self + Vec3(0, 0, n)

addXY(n: int | float = 1) Vec3

self with n added to x and y, equivalent to self + Vec3(n, n, 0)

addXZ(n: int | float = 1) Vec3

self with n added to x and z, equivalent to self + Vec3(n, 0, n)

addYZ(n: int | float = 1) Vec3

self with n added to y and z, equivalent to self + Vec3(0, n, n)

withX(n: int | float) Vec3

self with x replaced with n, equivalent to Vec3(n, self.y, self.z)

withY(n: int | float) Vec3

self with y replaced with n, equivalent to Vec3(self.x, n, self.z)

withZ(n: int | float) Vec3

self with z replaced with n, equivalent to Vec3(self.x, self.y, n)

withXY(n: int | float) Vec3

self with x and y replaced with n, equivalent to Vec3(n, n, self.z)

withXZ(n: int | float) Vec3

self with x and z replaced with n, equivalent to Vec3(n, self.y, n)

withYZ(n: int | float) Vec3

self with y and z replaced with n, equivalent to Vec3(self.x, n, n)