Skip to main content

Vector

A Vector composed of components (X, Y, Z) with floating point precision. Used mainly for entity position.


info

Vectors are internally and automatically compressed, which reduces it's size in the network up to 90%. Some cool details:

  • Vectors parameters in Classes Methods are usually compressed with precision of 1 decimal place (with some exceptions which we need more precision).
  • Vectors passed in Remote Events are compressed with precision of 2 decimal places. If you need more precision, we recommend passing them as raw number instead.

Examples

local new_vector = Vector(1452.5, 512, 943.1)

Constructors

Default Constructor

local my_vector = Vector(X?, Y?, Z?)
TypeNameDefaultDescription
numberX0X Coordinate
numberYXY Coordinate
numberZXZ Coordinate

🧽 Properties

TypeNameDescription
numberXX Coordinate
numberYY Coordinate
numberZZ Coordinate

Functions

info

This structure supports +, -, *, /, ^, ==, and tostring operations.

ReturnsNameDescription
booleanEqualsCheck against another vector for equality, within specified error limits
numberDistanceDistance between two points
numberDistanceSquaredSquared distance between two points
VectorGetUnsafeNormalCalculates normalized version of vector without checking for zero length
VectorGetSafeNormalGets a normalized copy of the vector, checking it is safe to do so based on the length
booleanIsNearlyZeroChecks whether vector is near to zero within a specified tolerance
booleanIsZeroChecks whether all components of the vector are exactly zero
booleanNormalizeNormalize this vector in-place if it is larger than a given tolerance. Leaves it unchanged if not
numberSizeGet the length (magnitude) of this vector
numberSizeSquaredGet the squared length of this vector
RotatorRotationReturns the orientation corresponding to the direction in which the vector points

Equals

Check if the vector is equal to another vector, within specified error limits

— Returns boolean (Are the vectors equal or not).

local ret = my_vector:Equals(other, tolerance?)
TypeParameterDefaultDescription
VectorotherThe vector to compare to
numbertolerance?0.000001The error limits

Distance

Returns the distance of 2 vectors

— Returns number (The distance betweem the vectors).

local ret = my_vector:Distance(other)
TypeParameterDefaultDescription
VectorotherThe vector to get the distance to

DistanceSquared

Return the squared distance of 2 vectors

— Returns number (The squared distance betweem the vectors).

local ret = my_vector:DistanceSquared(other)
TypeParameterDefaultDescription
VectorotherThe vector to get the squared distance to

GetUnsafeNormal

Returns the normalized version of vector without checking for zero length

— Returns Vector (The unsafe normal).

local ret = my_vector:GetUnsafeNormal()

GetSafeNormal

Returns a normalized copy of the vector, checking it is safe to do so based on the length

— Returns Vector (The safe normal).

local ret = my_vector:GetSafeNormal()

IsNearlyZero

Checks whether vector is near to zero within a specified tolerance

— Returns boolean (If the bool is near to zero).

local ret = my_vector:IsNearlyZero(tolerance?)
TypeParameterDefaultDescription
numbertolerance?0.000001The error limits

IsZero

Checks whether all components of the vector are exactly zero

— Returns boolean (If all components of the vector are exactly zero).

local ret = my_vector:IsZero()

Normalize

Normalize this vector in-place if it is larger than a given tolerance. Leaves it unchanged if not

— Returns boolean (If the vector has been modified).

local ret = my_vector:Normalize()

Size

Get the length (magnitude) of this vector

— Returns number (The lenght of the vector).

local ret = my_vector:Size()

SizeSquared

Get the squared length of this vector

— Returns number (The squared length of the vector).

local ret = my_vector:SizeSquared()

Rotation

Returns the orientation corresponding to the direction in which the vector points

— Returns Rotator (The orientation of the vector).

local ret = my_vector:Rotation()