# vector

### Functions:

#### vector

`vector(x: number, y: number, z: number)`: vector

| Argument | Type   | Description                 |
| -------- | ------ | --------------------------- |
| **x**    | number | X coordinate of 3D position |
| **y**    | number | Y coordinate of 3D position |
| **z**    | number | Z coordinate of 3D position |

Creates a new vector object. Please note that you need to load the built-in vector library with require "vector"

#### :angles

`vector_object:angles()`: number, number, number

Converts the vector to an angle and returns the pitch, yaw and roll

#### :dist2d

`vector_object:dist2d(other: vector)`: number

| Argument  | Type   | Description  |
| --------- | ------ | ------------ |
| **other** | vector | Other vector |

Returns the cross product / vector product of itself and another vector

#### :dist

`vector_object:dist(other: vector)`: number

| Argument  | Type   | Description                         |
| --------- | ------ | ----------------------------------- |
| **other** | vector | Vector to calculate the distance to |

Returns the 3d distance to another vector

#### :dist

`vector_object:dist(other: vector)`: number

| Argument  | Type   | Description                         |
| --------- | ------ | ----------------------------------- |
| **other** | vector | Vector to calculate the distance to |

Returns the 2d distance to another vector

#### :dot

`vector_object:dot()`: number

Returns the dot product of the vector

#### :init

`vector_object:init(x: number, y: number, z: number)`: vector

| Argument | Type   | Description                 |
| -------- | ------ | --------------------------- |
| **x**    | number | X coordinate of 3D position |
| **y**    | number | Y coordinate of 3D position |
| **z**    | number | Z coordinate of 3D position |

Overwrites the X, Y and Z coordinates of the vector object, returning itself

#### :init\_from\_angles

`vector_object:init_from_angles(pitch: number, yaw: number[, roll: number])`: vector

| Argument  | Type   | Description              |
| --------- | ------ | ------------------------ |
| **pitch** | number | Pitch component of angle |
| **yaw**   | number | Yaw component of angle   |
| **roll**  | number | Roll component of angle  |

Converts the pitch, yaw and roll passed to a forward vector and overwrites the X, Y and Z coordinates with that. Returns itself

#### :length

`vector_object:length()`: number

Returns the length (magnitude)

#### :length2d

`vector_object:length2d()`: number

Returns the 2d length (X and Y components)

#### :length2dsqr

`vector_object:length2dsqr()`: number

Returns the squared 2d length (X and Y components, faster than :length2d)

#### :lengthsqr

`vector_object:lengthsqr()`: number

Returns the squared length (faster than :length)

#### :lerp

`vector_object:lerp(to: vector, percentage: number)`: vector

| Argument       | Type   | Description                    |
| -------------- | ------ | ------------------------------ |
| **to**         | vector | Vector to lerp to              |
| **percentage** | number | Interpolation percentage (0-1) |

Interpolates by the specified percentage between the 2 vectors.

#### :normalize

`vector_object:normalize()`

Normalizes the vector, dividing it by it's own length (resulting in a unit vector with length = 1)

#### :normalized

`vector_object:normalized()`: vector

Returns a new unit vector, divided it by it's own length

#### :scale

`vector_object:scale(scalar: number)`

| Argument   | Type   | Description  |
| ---------- | ------ | ------------ |
| **scalar** | number | Scalar value |

Scales the vector by the specified value.

#### :scaled

`vector_object:scaled(scalar: number)`: vector

| Argument   | Type   | Description  |
| ---------- | ------ | ------------ |
| **scalar** | number | Scalar value |

Returns a new vector, scaled by the specified value.

#### :to

`vector_object:to(other: vector)`: vector

| Argument  | Type   | Description  |
| --------- | ------ | ------------ |
| **other** | vector | Other vector |

Returns the forward vector from itself to another vector

#### :unpack

`vector_object:unpack()`: number, number, number

Returns the X, Y and Z coordinate of the vector object. They can also be accessed by vec.x, vec.y, etc

#### :vectors

`vector_object:vectors()`: vector, vector

Returns the right and up vector of a forward vector


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gamesensical.gitbook.io/docs/developers/globals/vector.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
