# Module `Vector`

A 3-dimensional vector implementation that can be used for convenience.

All methods handle vectors as immutable to avoid side effects. Hence they return a new vector rather than modifying the called one. Vectors support arithmetic operations like a + b and comparisions like a == b.

### Usage:

```local v = Vector(1, 2, 3)
v.x = 7
print(v.x)
print(v:length())
print(tostring(v))
print(tostring(2 * v + v:normalized()))
```

## Class Vector

 Vector:new ([x=0[, y=0[, z=0]]]) Creates a new vector out of the components x, y, z. Vector.x X component of the vector. Vector.y Y component of the vector. Vector.z Z component of the vector. Vector:length () Returns the length of the vector. Vector:dot (o) Returns the dot product of two vectors a and b. Vector:cross (o) Returns the cross product of two vectors a and b. Vector:normalized () Returns a normalized vector that points in the same direction as self. Vector:copy () Returns a 1:1 copy of the vector. Vector:__tostring () Returns a readable representation of the vector.

## Class Vector

Vector:new ([x=0[, y=0[, z=0]]])
Creates a new vector out of the components x, y, z. You may use the alias Vector(x, y, z) instead.

### Parameters:

• x number X component of the vector. (default 0)
• y number Y component of the vector. (default 0)
• z number Z component of the vector. (default 0)

vector

### Usage:

```local a = Vector()
local b = Vector(1, 2)
local c = Vector(1, 2, 3)
```
Vector.x
X component of the vector.
Vector.y
Y component of the vector.
Vector.z
Z component of the vector.
Vector:length ()
Returns the length of the vector.

number

### Usage:

```local a = Vector(1, 2, 3)
print(a:length())
```
Vector:dot (o)
Returns the dot product of two vectors a and b. Formally the dot product of two vectors > a = (a1, a2, a3), b = (b1, b2, b3) is defined as > a1 * b1 + a2 * b2 + a3 * b3

• o vector

number

### Usage:

`a:dot(b)`
Vector:cross (o)
Returns the cross product of two vectors a and b.

• o vector

vector

### Usage:

`a:cross(b)`
Vector:normalized ()
Returns a normalized vector that points in the same direction as self.

vector

### Usage:

```local a = Vector(1, 2, 3)
local b = a:normalized()
assert(b:length() == 1)
```
Vector:copy ()
Returns a 1:1 copy of the vector.

vector

### Usage:

```local a = Vector(1, 2, 3)
local b = a:copy()
local assert(a == b)
```
Vector:__tostring ()
Returns a readable representation of the vector. Usually used for debug purposes.

### Usage:

`print(tostring(Vector(1, 2, 3)))`
generated by LDoc 1.4.3 Last updated 2019-07-28 16:08:29