# Vector

A vector composed of components (X, Y, Z) with floating point precision.

##### Tip

This structure is Open Sourced at https://github.com/nanos-world/nanos-world-lua-lib. Feel free to push merge 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.

## π Usageβ

`local new_vector = Vector(1452.5, 512, 943.1)`

## π Propertiesβ

Type | Name | Description |
---|---|---|

number | `X` | X Coordinate |

number | `Y` | Y Coordinate |

number | `Z` | Z Coordinate |

## β© Functionsβ

##### tip

**Note:** This structure supports `+`

, `-`

, `*`

, `/`

, `^`

, `==`

, and `tostring`

operations.

Returns | Name | Description |
---|---|---|

boolean | `Equals(other, tolerance)` | Check against another vector for equality, within specified error limits |

number | `Distance(other)` | Distance between two points |

number | `DistanceSquared(other)` | Squared distance between two points |

Vector | `GetUnsafeNormal()` | Calculates normalized version of vector without checking for zero length |

Vector | `GetSafeNormal()` | Gets a normalized copy of the vector, checking it is safe to do so based on the length |

boolean | `IsNearlyZero(tolerance)` | Checks whether vector is near to zero within a specified tolerance |

boolean | `IsZero()` | Checks whether all components of the vector are exactly zero |

boolean | `Normalize()` | Normalize this vector in-place if it is larger than a given tolerance. Leaves it unchanged if not |

number | `Size()` | Get the length (magnitude) of this vector |

number | `SizeSquared()` | Get the squared length of this vector |

Rotator | `Rotation()` | Returns the orientation corresponding to the direction in which the vector points |