# float4¶

`float4` represents a four-dimensional vectors.

### Properties¶

float4 zero
A float4 with the magnitude of zero
float4 one
A float4 with a value of 1 on every axis
number magnitude
Returns the length of this vector
float4 normalized
Returns this vector with a magnitude of 1
number sqrMagnitude
Returns the squared length of this vector
number x
The x-coordinate of the float4
number y
The y-coordinate of the float4
number z
The z-coordinate of the float4
number w
The w-coordinate of the float4

### Functions¶

float4 float4.New(number x, number y, number z, number w)
Constructs a new float4 using the given `x`, `y`,`z` and `w` components.
number float4.Distance(float4 a, float4 b)
Returns the distance between `a` and `b`.
``````local other = float4.New(1,1,1,1)
local _self = float4.New(0,0,0,0)
local dist = float4.Distance(other, _self)
print("distance to other: " .. dist)
``````
number float4.Dot(float4 a, float4 b)
Dot product of two vectors.
float4 float4.Lerp(float4 a, float4 b, number t)
Linearly interpolates between two points. Interpolates between the points `a` and `b` by `t`. The parameter `t` is clamped to the range [0, 1]. When `t` = 0, returns `a`. When `t` = 1, returns `b`. When `t` = 0.5, returns the midpoint of between `a` and `b`.
• `a` Start value, returned when t = 0.
• `b` End value, returned when t = 1.
float4 float4.Max(float4 a, float4 b)
Returns a vector that is made from the largest components of two vectors.
``````local a = float4.New(1,2,3,4)
local b = float4.New(4,3,2,1)
-- (4,3,3,4)
print(float4.Max(a,b))
``````
float4 float4.Min(float4 a, float4 b)
Returns a vector that is made from the smallest components of two vectors.
float4 float4.MoveTowards(float4 current, float4 target, number maxDistanceDelta)
Moves a point `current` towards `target`.
• `current` The position to move from.
• `target` The position to move towards.
• `maxDistanceDelta` Distance to move current per call.
float4 float4.Project(float4 a, float4 b)
Projects a vector onto another vector.
float4 float4.Scale(float4 a, float4 b)
Multiplies two vectors component-wise. Every component in the result is a component of `a` multiplied by the same component of `b`.
float4 Mul(number value)
Multiplies self by a number, same as operator `*`.
``````local vector = float4.New(1,1,1,1)
-- same as result = vector * 2
local result = vector:Mul(2)
-- (2,2,2,2)
print(result)
``````
float4 Div(number value)
Divides self by a number, same as operator `/`.
Adds other vector, same as operator `+`.
float4 Sub(float4 value)
Subtracts self from another, same as operator `-`.
number SqrMagnitude()
Returns the squared length of this vector.
number Magnitude()
Returns the length of this vector. The length of the vector is square root of `(x*x+y*y)`.
float4 Normalize()
Makes this vector have a magnitude of 1.
void Set(number x, number y, number z, number w)
Set `x`, `y`, `z` and `w` components of an existing float4.
float4 SetNormalize()
Makes and returns this vector have a magnitude of 1.
void SetScale(float4 value)
Multiplies two vectors component-wise.