Skip to content

vector

Not yet Library

A library of vector functions.

Description

This library implements functionality for the vector type in addition to the built-in primitive operator support. It uses vectors with three components (x, y, and z).

Individual vector components can be accessed using the fields x or X, y or Y, z or Z. Since vector values are immutable, writing to individual components is not supported.

Properties

zero Not yet Constant vector with all components set to 0.

Constant vector with all components set to 0.

A pre-allocated constant equivalent to vector.create(0, 0, 0). Useful as a default value or additive identity in vector arithmetic without allocating a new vector each time.

one Not yet Constant vector with all components set to 1.

Constant vector with all components set to 1.

A pre-allocated constant equivalent to vector.create(1, 1, 1). Useful as a multiplicative identity or scale factor in vector arithmetic without allocating a new vector each time.

Functions

create Not yet Creates a new vector with the given component values.

Creates a new vector with the given component values. The z parameter defaults to 0 when omitted, so vector.create(1, 2) is equivalent to vector.create(1, 2, 0).

magnitude Not yet Calculates the magnitude of a given vector.

Calculates the magnitude of a given vector.

Returns the magnitude (Euclidean length) of the vector, computed as math.sqrt(vec.x^2 + vec.y^2 + vec.z^2).

normalize Not yet Computes the normalized version (unit vector) of a given vector.

Computes the normalized version (unit vector) of a given vector.

Returns a unit vector (magnitude of 1) pointing in the same direction as the input. Computed as vec / vector.magnitude(vec). If the input vector has zero magnitude, the result contains nan components.

cross Not yet Computes the cross product of two vectors.

Computes the cross product of two vectors.

Returns the cross product of two vectors, which is a vector perpendicular to both inputs whose magnitude equals the area of the parallelogram they span. The result is computed as vector.create(vec1.y*vec2.z - vec1.z*vec2.y, vec1.z*vec2.x - vec1.x*vec2.z, vec1.x*vec2.y - vec1.y*vec2.x).

dot Not yet Computes the dot product of two vectors.

Computes the dot product of two vectors.

Returns the dot product (scalar product) of two vectors, computed as vec1.x*vec2.x + vec1.y*vec2.y + vec1.z*vec2.z. The result is a single number equal to the product of the magnitudes of the two vectors times the cosine of the angle between them.

angle Not yet Computes the angle between two vectors in radians.

Computes the angle between two vectors in radians. The axis, if specified, is used to determine the sign of the angle.

floor Not yet Applies math.floor() to every component of the input vector.

Applies math.floor() to every component of the input vector.

Returns a new vector with each component rounded down to the nearest integer, equivalent to vector.create(math.floor(vec.x), math.floor(vec.y), math.floor(vec.z)).

ceil Not yet Applies math.ceil() to every component of the input vector.

Applies math.ceil() to every component of the input vector.

Returns a new vector with each component rounded up to the nearest integer, equivalent to vector.create(math.ceil(vec.x), math.ceil(vec.y), math.ceil(vec.z)).

abs Not yet Applies math.abs() to every component of the input vector.

Applies math.abs() to every component of the input vector.

Returns a new vector with each component replaced by its absolute value, equivalent to vector.create(math.abs(vec.x), math.abs(vec.y), math.abs(vec.z)).

sign Not yet Applies math.sign() to every component of the input vector.

Applies math.sign() to every component of the input vector.

Returns a new vector where each component is 1 if the corresponding input component is positive, -1 if negative, or 0 if zero. Equivalent to vector.create(math.sign(vec.x), math.sign(vec.y), math.sign(vec.z)). The behavior for negative zero and nan is consistent with math.sign.

clamp Not yet Applies math.clamp() to every component of the input vector.

Applies math.clamp() to every component of the input vector.

Returns a new vector with each component clamped between the corresponding components of min and max. Each component of max must be greater than or equal to the corresponding component of min; otherwise, an error is raised.

lerp Not yet Returns a vector linearly interpolated between two vectors by a fractional alpha.

Returns a vector linearly interpolated between two vectors by a fractional alpha.

Returns a vector linearly interpolated between two vectors (vec1, vec2) by the fraction alpha. Note that alpha is not limited to the range [0, 1].

max Not yet Applies math.max() to the corresponding components of the input vectors.

Applies math.max() to the corresponding components of the input vectors.

Returns a new vector where each component is the maximum of the corresponding components across all input vectors. Accepts a variadic number of vectors (at least one). When a component is nan in one vector but a valid number in another, the valid number is used.

min Not yet Applies math.min() to the corresponding components of the input vectors.

Applies math.min() to the corresponding components of the input vectors.

Returns a new vector where each component is the minimum of the corresponding components across all input vectors. Accepts a variadic number of vectors (at least one). When a component is nan in one vector but a valid number in another, the valid number is used.

Roblox reference: vector