# Vector4

A four-component vector.

## Constructors

Constructor Name Return Type Description Tags
`Vector4.New([number x, number y, number z, number w])` `Vector4` Constructs a Vector4 with the given `x`, `y`, `z`, `w` values, defaults to (0, 0, 0, 0). None
`Vector4.New(number v)` `Vector4` Constructs a Vector4 with `x`, `y`, `z`, `w` values all set to the given value. None
`Vector4.New(Vector3 xyz, number w)` `Vector4` Constructs a Vector4 with `x`, `y`, `z` values from the given Vector3 and the given `w` value. None
`Vector4.New(Vector4 v)` `Vector4` Constructs a Vector4 with `x`, `y`, `z`, `w` values from the given Vector4. None
`Vector4.New(Vector2 xy, Vector2 zw)` `Vector4` Constructs a Vector4 with `x`, `y` values from the first Vector2 and `z`, `w` values from the second Vector2. None
`Vector4.New(Color v)` `Vector4` Constructs a Vector4 with `x`, `y`, `z`, `w` values mapped from the given Color's `r`, `g`, `b`, `a` values. None

## Constants

Constant Name Return Type Description Tags
`Vector4.ZERO` `Vector4` (0, 0, 0, 0) None
`Vector4.ONE` `Vector4` (1, 1, 1, 1) None

## Properties

Property Name Return Type Description Tags
`x` `number` The `x` component of the Vector4. Read-Write
`y` `number` The `y` component of the Vector4. Read-Write
`z` `number` The `z` component of the Vector4. Read-Write
`w` `number` The `w` component of the Vector4. Read-Write
`size` `number` The magnitude of the Vector4. Read-Only
`sizeSquared` `number` The squared magnitude of the Vector4. Read-Only

## Functions

Function Name Return Type Description Tags
`GetNormalized()` `Vector4` Returns a new Vector4 with size 1, but still pointing in the same direction. Returns (0, 0, 0, 0) if the vector is too small to be normalized. None
`GetAbs()` `Vector4` Returns a new Vector4 with each component the absolute value of the component from this Vector4. None

## Class Functions

Class Function Name Return Type Description Tags
`Vector4.Lerp(Vector4 from, Vector4 to, number progress)` `Vector4` Linearly interpolates between two vectors by the specified progress amount and returns the resultant Vector4. None

## Operators

Operator Name Return Type Description Tags
`Vector4 + Vector4` `Vector4` Component-wise addition. None
`Vector4 + number` `Vector4` Adds the right-side number to each of the components in the left side and returns the resulting Vector4. None
`Vector4 - Vector4` `Vector4` Component-wise subtraction. None
`Vector4 - number` `Vector4` Subtracts the right-side number from each of the components in the left side and returns the resulting Vector4. None
`Vector4 * Vector4` `Vector4` Component-wise multiplication. None
`Vector4 * number` `Vector4` Multiplies each component of the Vector4 by the right-side number. None
`number * Vector4` `Vector4` Multiplies each component of the Vector4 by the left-side number. None
`Vector4 / Vector4` `Vector4` Component-wise division. None
`Vector4 / number` `Vector4` Divides each component of the Vector4 by the right-side number. None
`-Vector4` `Vector4` Returns the negation of the Vector4. None
`Vector4 .. Vector4` `number` Returns the dot product of the Vector4s. None
`Vector4 ^ Vector4` `Vector4` Returns the cross product of the Vector4s. None

## Examples

Example using:

### `size`

This example shows how a `Color` can be converted into a `Vector4`, which opens the possibility of some math operations that are available to the latter.

``````function ColorToVector4(color)
local v = Vector4.New()
v.x = color.r
v.y = color.g
v.z = color.b
v.w = color.a
return v
end

function GetMagnitudeOfColor(color)
local v = ColorToVector4(color)
return v.size
end
``````