tes3vector2⚓︎
A simple pair of floating-point numbers.
Properties⚓︎
x
⚓︎
The first value in the vector.
Returns:
result
(number)
y
⚓︎
The second value in the vector.
Returns:
result
(number)
Methods⚓︎
__tostring
⚓︎
Converts the vector to a string with 2 decimal places.
local result = myObject:__tostring()
Returns:
result
(string)
copy
⚓︎
Creates a copy of the vector.
local result = myObject:copy()
Returns:
result
(tes3vector2)
distance
⚓︎
Calculates the distance to another vector in the standard way, i.e., using the Euclidean distance.
local result = myObject:distance(vec)
Parameters:
vec
(tes3vector2)
Returns:
result
(number)
distanceChebyshev
⚓︎
Calculates the distance to another vector, using the Chebyshev metric, which is defined as
math.max(math.abs(v1.x - v2.x), math.abs(v1.y - v2.y))
This is useful for ensuring that the x and y coordinates between two vectors are all (independently) within a certain distance from each other.
Here is a geometric description of the difference between the normal distance and the Chebyshev distance for two tes3vector2
s v1
and v2
:
- If
v1:distance(v2) <= 1
, thenv2
is contained in a circle aroundv1
with radius 1 (i.e. diameter 2). - If
v1:distanceChebyshev(v2) <= 1
, thenv2
is contained within a square centered aroundv1
, where the square sides have length 2.
local result = myObject:distanceChebyshev(vec)
Parameters:
vec
(tes3vector2)
Returns:
result
(number)
distanceManhattan
⚓︎
Calculates the distance to another vector, using the Manhattan (i.e. city block) metric. In the two-dimensional case, the Manhattan metric can be thought of as the distance that two taxis will have to travel if they're following a grid system. The formula for the Manhattan distance is
math.abs(v1.x - v2.x) + math.abs(v1.y - v2.y)
This is useful for checking how far you'd actually have to move if you're only allowed to move along one axis at a time.
local result = myObject:distanceManhattan(vec)
Parameters:
vec
(tes3vector2)
Returns:
result
(number)
length
⚓︎
Calculates the length of the vector.
local result = myObject:length()
Returns:
result
(number)
normalize
⚓︎
Normalize the vector in-place, or set its components to zero if normalization is not possible. Returns true
if the vector was successfully normalized.
local result = myObject:normalize()
Returns:
result
(boolean)
normalized
⚓︎
Get a normalized copy of the vector.
local result = myObject:normalized()
Returns:
result
(tes3vector2)
Functions⚓︎
new
⚓︎
Creates a new vector. If no parameters are provided, an empty set will be constructed.
local vector = tes3vector2.new(x, y)
Parameters:
x
(number): Default:0
.y
(number): Default:0
.
Returns:
vector
(tes3vector2)
Math Operations⚓︎
Addition (+
)⚓︎
Left operand type | Right operand type | Result type | Description |
---|---|---|---|
tes3vector2 | tes3vector2 | tes3vector2 | Standard vector addition. |
Division (/
)⚓︎
Left operand type | Right operand type | Result type | Description |
---|---|---|---|
tes3vector2 | number | tes3vector2 | Divides the vector by a scalar. |
Multiplication (*
)⚓︎
Left operand type | Right operand type | Result type | Description |
---|---|---|---|
tes3vector2 | tes3vector2 | tes3vector2 | The per-element multiplication of two vectors, also known as Hadamard product. |
tes3vector2 | number | tes3vector2 | Multiplies the vector by a scalar. |
Subtraction (-
)⚓︎
Left operand type | Right operand type | Result type | Description |
---|---|---|---|
tes3vector2 | tes3vector2 | tes3vector2 | Standard vector subtraction. |