Skip to main content
Version: latest - a1.15.x βš–οΈ

πŸ“ Vector

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

πŸ‘Open Source
This structure is Open Sourced on GitHub. Feel free to make pull requests and suggest changes!
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)

πŸ—οΈ Constructor​

local my_vector = Vector(X?, Y?, Z?)
TypeNameDefaultDescription
number X0X Coordinate
number Y0Y Coordinate
number Z0Z Coordinate

🧽 Properties​

TypeNameDescription
number XX Coordinate
number YY Coordinate
number ZZ Coordinate

🦠 Functions​

info

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

ReturnsNameDescription
boolean EqualsCheck against another vector for equality, within specified error limits
number DistanceDistance between two points
number DistanceSquaredSquared distance between two points
Vector GetUnsafeNormalCalculates normalized version of vector without checking for zero length
Vector GetSafeNormalGets a normalized copy of the vector, checking it is safe to do so based on the length
boolean IsNearlyZeroChecks whether vector is near to zero within a specified tolerance
boolean IsZeroChecks whether all components of the vector are exactly zero
boolean NormalizeNormalize this vector in-place if it is larger than a given tolerance. Leaves it unchanged if not
number SizeGet the length (magnitude) of this vector
number SizeSquaredGet the squared length of this vector
Rotator RotationReturns 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
Vector otherThe vector to compare to
number tolerance?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
Vector otherThe 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
Vector otherThe 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
number tolerance?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()