vector¶
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