# Vector3

Defines a 3D vector, that can be used to represent a position, direction or rotation of an object in three-dimensions (x,y,z).

## Constructors​

### `Vector3.new`​

Creates a new Vector3 with the given x, y and z values.

Example

``-- Creates a new Vector3 with x=1, y=2, z=3, and assigns the vector to variable "a"local a = Vector3.new(1, 2, 3)local b = Vector3.new()print(a)    -- Prints '(1, 2, 3)'print(b)    -- Prints '(0, 0, 0)'``

## Properties​

### x​

The x component of the Vector3.

Example

``local a = Vector3.new(1, 2, 3)print(a.x)   -- Prints '1'``

### y​

The y component of the Vector3.

Example

``local a = Vector3.new(1, 2, 3)print(a.y)   -- Prints '2'``

### z​

The z component of the Vector3.

Example

``local a = Vector3.new(1, 2, 3)print(a.z)   -- Prints '3'``

## Functions​

### angle(a, b)​

Returns the angle (in degrees) between the two vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(4, 5, 6)print(Vector3.angle(a, b))   -- Prints '12.941'``

### dot(a, b)​

Returns the dot product of the two vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(4, 5, 6)print(Vector3.dot(a, b))    -- Prints '32'``

### cross(a, b)​

Returns the cross product of the two vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(4, 5, 6)print(Vector3.cross(a, b))    -- Prints '(-3, 6, -3)'``

### distance(a, b)​

Returns the distance between the two vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(4, 5, 6)print(Vector3.distance(a, b))   -- Prints '5.196'``

### lerp(from, to, t)​

Returns a Vector3 where the value of each component is linearly interpolated from the input vectors, by the value specified in "t" (which should be between 0 and 1).

Example

``local a = Vector3.new(1, 1, 1)local b = Vector3.new(2, 2, 2)print(Vector3.lerp(a, b, 0.5))   -- Prints '(1.5, 1.5, 1.5)'``

### magnitude(a)​

Returns the length of the input vector.

Example

``local a = Vector3.new(1, 1, 1)print(Vector3.magnitude(a))   -- Prints '1.732'``

### max(a, b)​

Returns a Vector3 where the value of each component is the maximum value from the respective component in each of the input vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(3, 2, 1)print(Vector3.max(a, b))   -- Prints '(3, 2, 3)'``

### min(a, b)​

Returns a Vector3 where the value of each component is the minimum value from the respective component in each of the input vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(3, 2, 1)print(Vector3.min(a, b))   -- Prints '(1, 2, 1)'``

### normalize(a)​

Returns a Vector3 pointing in the same direction as the input vector, but with a length of 1.

Example

``local a = Vector3.new(3, 4, 5)print(Vector3.normalize(a))   -- Prints '(0.424, 0.566, 0.707)'``

### sqrMagnitude(a)​

Returns the squared length of the input vector.

Example

``local a = Vector3.new(1, 2, 3)print(Vector3.sqrMagnitude(a))   -- Prints '14'``

## Math Operations​

### `Vector3 + Vector3`​

Adds each of the components of the vector.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(3, 4, 5)print(a + b)    -- Prints '(4, 6, 8)'``

### `Vector3 - Vector3`​

Subtracts each of the components of the vector.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(3, 4, 5)print(a - b)    -- Prints '(-2, -2, -2)'``

### `Vector3 * number`​

Multiplies each of the components of the vector by the number.

Example

``local a = Vector3.new(1, 2, 3)print(a * 3)    -- Prints '(3, 6, 9)'``

### `Vector3 * Vector3`​

Multiplies each of the components of the first vector by the respective component on the second vector.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(3, 4, 5)print(a * b)    -- Prints '(3, 8, 15)'``

### `Vector3 / number`​

Divides each of the components of the vector by the number.

Example

``local a = Vector3.new(3, 12, 15)print(a / 3)    -- Prints '(1, 4, 5)'``

### `Vector3 / Vector3`​

Divides each of the components of the first vector by the respective component on the second vector.

Example

``local a = Vector3.new(3, 12, 15)local b = Vector3.new(3, 4, 5)print(a / b)    -- Prints '(1, 3, 3)'``

### `Vector3 ^ Vector3`​

Returns the cross product of the two vectors.

Example

``local a = Vector3.new(1, 2, 3)local b = Vector3.new(4, 5, 6)print(a ^ b)    -- Prints '(-3, 6, -3)'``

### `-Vector3`​

Returns the negative of the vector.

Example

``local a = Vector4.new(1, -2, 3)print(-a)   -- Prints '(-1, 2, -3)'``

### `#Vector3`​

Returns the length of the vector.

Example

``local a = Vector3.new(1, 2, 3)print(#a)   -- Prints '3.742'``

## Constants​

### `Vector3.zero`​

Returns a Vector3 where the value of each component is 0.

Example

``print(Vector3.zero)    -- Prints '(0, 0, 0)'``

### `Vector3.one`​

Returns a Vector3 where the value of each component is 1.

Example

``print(Vector3.one)    -- Prints '(1, 1, 1)'``

### `Vector3.up`​

Returns a Vector3 where the value of the y component is 1.

Example

``print(Vector3.up)    -- Prints '(0, 1, 0)'``

### `Vector3.down`​

Returns a Vector3 where the value of the y component is -1.

Example

``print(Vector3.down)    -- Prints '(0, -1, 0)'``

### `Vector3.left`​

Returns a Vector3 where the value of the x component is -1.

Example

``print(Vector3.left)    -- Prints '(-1, 0, 0)'``

### `Vector3.right`​

Returns a Vector3 where the value of the x component is 1.

Example

``print(Vector3.right)    -- Prints '(1, 0, 0)'``

### `Vector3.forward`​

Returns a Vector3 where the value of the z component is 1.

Example

``print(Vector3.forward)    -- Prints '(0, 0, 1)'``

### `Vector3.back`​

Returns a Vector3 where the value of the z component is -1.

Example

``print(Vector3.back)    -- Prints '(0, 0, -1)'``