#### new AxVector3(v1, v2non-null, v3non-null)

Creates a vector object and initializes its components
Sets the components of the vector to the given values. Supports multiple input formats
Valid input formats are
() - Initializes all components to zero
(Number) - Sets all components to the value of the given number
(Number, Number, Number) - Sets the x, y and z components to the values of the given numbers in the respective order
(AxVector2, Number) - Sets the x and y components to the respective values from the given vector and the z component to the values of the given number
(AxVector3) - Copies the components from the given vector

##### Parameters:

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

`v1` |
Number | AxVector2 | AxVector3 | For (number) input - the value to set to all components. For (x, y, z) input - the value for the X component of the vector. For (AxVector2, z) input - the AxVector2 which contains the x and y components. For (AxVector3) input - the vector to copy from. |

`v2` |
Number | For (x, y, z) input - the value for the Y component. For (AxVector2, z) input - the value for the Z component. |

`v3` |
Number | For (x, y, z) input - the value for the Z component. |

- Source:

### Methods

#### Add(v) → {AxVector3}

Returns a vetor which is the sum of the original vector and the given one

##### Parameters:

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

`v` |
AxVector3 | The vector, which is to be added to the original one |

- Source:

##### Returns:

The sum of the original vector and the given one

- Type
- AxVector3

#### CartesianToSpherical() → {AxVector3}

Given the original vector contains Cartesian space coordinates (x, y and z), returns the spatially equivalent vector in spherical space coordinates, such that X corresponds to azimuth, Y corresponds to elevation and Z corresponds to radius

- Source:

##### Returns:

The spatially equivalent vector in spherical space coordinates, where X is azimuth, Y is elevation and Z is radius

- Type
- AxVector3

#### Cross(v) → {AxVector3}

Returns the cross product of the original vector and the given one

##### Parameters:

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

`v` |
AxVector3 | The vector to calculate cross product against |

- Source:

##### Returns:

The cross product of the original vector and the given one

- Type
- AxVector3

#### DistanceTo(v) → {Number}

Returns the distance between the point represented by the vector and a point represented by the given vector

##### Parameters:

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

`v` |
AxVector3 | A vector representing the point to which distance will be calculated |

- Source:

##### Returns:

The distance to the given point

- Type
- Number

#### Dot(v) → {Number}

Returns the dot product of the original vector and the given one

##### Parameters:

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

`v` |
AxVector3 | The vector to calculate dot product against |

- Source:

##### Returns:

The dot product of the original vector and the given one

- Type
- Number

#### Equals(vector) → {Boolean}

Compares the vector with another one and returns true if both are identical

##### Parameters:

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

`vector` |
AxVector3 | The vector to compare with |

- Source:

##### Returns:

True if identical to the given vector

- Type
- Boolean

#### GetLength() → {Number}

Calculates the length of the vector

- Source:

##### Returns:

Returns the length of the vector

- Type
- Number

#### Invert() → {AxVector3}

Returns the vector inverted

- Source:

##### Returns:

An inverted version of the original vector

- Type
- AxVector3

#### Lerp(v, factor) → {Number}

Returns a linearly vector interpolated between (or extrapolated outside of) the original and the given one

##### Parameters:

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

`v` |
AxVector3 | The vector towards which to interpolate (or extrapolate) |

`factor` |
Number | The interpolation (or extrapolation) value. Values between 0 and 1 result in interpolation, while values outside of this range result in extrapolation. |

- Source:

##### Returns:

A linearly interpolated (or extrapolated) vector

- Type
- Number

#### LerpSherical(s, factor) → {AxVector3}

Returns a vector in spherical coordinates, which is a linear interpolation between (or extrapolation outside of) the original vector and the provided one, given both are also in spherical coordinates
Spherical coordinates are interpreted as X being azimuth, Y being elevation and Z being radius

##### Parameters:

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

`s` |
AxVector3 | The vector in spherical coordinates, towards which to interpolate (or extrapolate) |

`factor` |
Number | The interpolation (or extrapolation) value. Values between 0 and 1 result in interpolation, while values outside of this range result in extrapolation. |

- Source:

##### Returns:

A linearly interpolated (or extrapolated) vector in spherical coordinates, given the original vector and the provided one are also in spherical coordinates

- Type
- AxVector3

#### Max(v) → {AxVector3}

Returns a vector with each of its components being the greater between their original value and the value of the corresponding component of the given vector.
In effect, the result is a component-wise maximum vector

##### Parameters:

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

`v` |
AxVector3 | The vector, whose components to compare against |

- Source:

##### Returns:

A component-wise maximum vector

- Type
- AxVector3

#### Min(v) → {AxVector3}

Returns a vector with each of its components being the lesser between their original value and the value of the corresponding component of the given vector.
In effect, the result is a component-wise minimum vector

##### Parameters:

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

`v` |
AxVector3 | The vector, whose components to compare against |

- Source:

##### Returns:

A component-wise minimum vector

- Type
- AxVector3

#### Normalize() → {AxVector3}

Returns the vector normalized

- Source:

##### Returns:

A normalized version of the original vector

- Type
- AxVector3

#### OfLength(length) → {AxVector3}

Return a vector with the same orientation, but of the given length

##### Parameters:

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

`length` |
Number | Length of the returned vector |

- Source:

##### Returns:

A vector with the same orientation as the original, but of the given length

- Type
- AxVector3

#### Scale(v) → {AxVector3}

Returns the vector with each of its components multiplied by the components of the given vector

##### Parameters:

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

`v` |
AxVector3 | The vector by which compoenents to multiply the components of the original one |

- Source:

##### Returns:

The component-wise scaled vector

- Type
- AxVector3

#### Scale(factor) → {AxVector3}

Returns the vector with each of its components multiplied by the given value

##### Parameters:

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

`factor` |
Number | The value by which to multiply the components of the original vector |

- Source:

##### Returns:

The component-wise scaled vector

- Type
- AxVector3

#### Set(v1, v2non-null, v3non-null)

Sets the components of the vector to the given values. Supports multiple input formats
Valid input formats are
(Number) - Sets all components to the value of the given number
(Number, Number, Number) - Sets the x, y and z components to the values of the given numbers in the respective order
(AxVector2, Number) - Sets the x and y components to the respective values from the given vector and the z component to the values of the given number
(AxVector3) - Copies the components from the given vector

##### Parameters:

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

`v1` |
Number | AxVector2 | AxVector3 | For (number) input - the value to set to all components. For (x, y, z) input - the value for the X component of the vector. For (AxVector2, z) input - the AxVector2 which contains the x and y components. For (AxVector3) input - the vector to copy from. |

`v2` |
Number | For (x, y, z) input - the value for the Y component. For (AxVector2, z) input - the value for the Z component. |

`v3` |
Number | For (x, y, z) input - the value for the Z component. |

- Source:

#### Set_1(value)

Sets the components of the vectors to the given value

##### Parameters:

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

`value` |
Number | The value to set all the three component of the vector to |

- Source:

#### Set_2(x, y, z)

Sets the components of the vectors to the given values

##### Parameters:

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

`x` |
Number | The value for the X component of the vector |

`y` |
Number | The value for the Y component of the vector |

`z` |
Number | The value for the Z component of the vector |

- Source:

#### Set_3(source, z)

Constructs the vector's X and Y components from a 2D vector and the Z component from a value

##### Parameters:

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

`source` |
AxVector2 | A 2D vector to use as source for the X and Y components |

`z` |
Number | A value to use as source for the Z component |

- Source:

#### Set_4(source)

Copies the source vector

##### Parameters:

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

`source` |
AxVector3 | A vector to copy from |

- Source:

#### SphericalToCartesian() → {AxVector3}

Given the original vector contains spherical space coordinates (X as azimuth, Y as elevation and Z as radius), returns a spatially equivalent vector in Cartesian space coordinates.

- Source:

##### Returns:

The spatially equivalent vector in Cartesian space coordinates, given the original vector is in spherical coordinates

- Type
- AxVector3

#### Subtract(v) → {AxVector3}

Returns a vetor which is the difference between the original vector and the given one

##### Parameters:

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

`v` |
AxVector3 | The vector, which is to be subtracted from the original one |

- Source:

##### Returns:

The difference between the original vector and the given one

- Type
- AxVector3

#### Transform(transformation) → {AxVector3}

Returns a vector which is the original one, transformed by the given transformation matrix

##### Parameters:

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

`transformation` |
AxMatrix | The transformation matrix to apply |

- Source:

##### Returns:

The transformed vector

- Type
- AxVector3

#### (static) Add(result, v1, v2)

Adds two vectors

##### Parameters:

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

`result` |
AxVector3 | The resulting vector produced by adding the two vectors |

`v1` |
AxVector3 | First vector |

`v2` |
AxVector3 | Second vector |

- Source:

#### (static) CartesianToSpherical(result, x, y, z)

Converts Cartesian coordinates into spherical coordinates
The result coordinates are as follow:
result.x - azimuth: range 0 to 2Pi, initial direction is negative Z (east), increasing towards full revolution around positive Y
result.y - elevation: range -Pi/2 to Pi/2, initial direction is negative Y (down), increasing towards positive Y (up)
result.z - distance

##### Parameters:

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

`result` |
AxVector3 | The resulting vector containing the spherical coordinates. |

`x` |
Number | The X cartesian coordinate |

`y` |
Number | The Y cartesian coordinate |

`z` |
Number | The Z cartesian coordinate |

- Source:

#### (static) CartesianToSpherical_2(result, cartesian)

Converts Cartesian coordinates into spherical coordinates
The result coordinates are as follow:
result.x - azimuth: range 0 to 2Pi, initial direction is negative Z (east), increasing towards full revolution around positive Y
result.y - elevation: range -Pi/2 to Pi/2, initial direction is negative Y (down), increasing towards positive Y (up)
result.z - distance

##### Parameters:

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

`result` |
AxVector3 | The resulting vector containing the spherical coordinates. |

`cartesian` |
AxVector3 | The vector containing the cartesian coordinates |

- Source:

#### (static) Copy(result, source)

Copies the source vector into the result

##### Parameters:

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

`result` |
AxVector3 | The vector to copy to |

`source` |
AxVector3 | The vector to copy from |

- Source:

#### (static) Cross(result, v1, v2)

Calculates the cross product (a.k.a. vector product) of two vectors

##### Parameters:

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

`result` |
AxVector3 | The resulting vector produced by adding the two vectors |

`v1` |
AxVector3 | First vector |

`v2` |
AxVector3 | Second vector |

- Source:

#### (static) Distance(v1, v2) → {Number}

Calculates the distance between two points in 3D space

##### Parameters:

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

`v1` |
AxVector3 | First point |

`v2` |
AxVector3 | Second point |

- Source:

##### Returns:

The distance between the two points

- Type
- Number

#### (static) Dot(v1, v2) → {Number}

Calculates the dot product (a.k.a. scalar product) of two vectors.

##### Parameters:

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

`v1` |
AxVector3 | First vector |

`v2` |
AxVector3 | Second vector |

- Source:

##### Returns:

The dot product of the two vectors

- Type
- Number

#### (static) Invert(result, v)

Inverts a vector

##### Parameters:

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

`result` |
AxVector3 | The resulting inverted vector |

`v` |
AxVector3 | The vector to be inverted |

- Source:

#### (static) Lerp(result, v1, v2, factor)

Performs linear interpolation or extrapolation between two vectors

##### Parameters:

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

`result` |
AxVector3 | The resulting vector produced by interpolating between the given two vectors |

`v1` |
AxVector3 | First vector |

`v2` |
AxVector3 | Second vector |

`factor` |
Number | Interpolation factor. Having this factor outside of [0, 1] results in extrapolation |

- Source:

#### (static) LerpSherical(result, v1, v2, factor)

Interpolates between spherical coordinates, producing a gradual change of a vector's orientation
The spherical coordinates are as follow:
x - azimuth: range 0 to 2Pi, initial direction is negative Z (east), increasing towards full revolution around positive Y
y - elevation: range -Pi/2 to Pi/2, initial direction is negative Y (down), increasing towards positive Y (up)
z - distance

##### Parameters:

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

`result` |
AxVector3 | The resulting vector |

`v1` |
AxVector3 | The first vector of spherical coordinates |

`v2` |
AxVector3 | The second vector of spherical coordinates |

`factor` |
Number | The factor by which to interpolate |

- Source:

#### (static) Max(result, v1, v2)

Produces a vector whose components are each the greater corresponding component from two other vectors

##### Parameters:

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

`result` |
AxVector3 | The resulting vector, having the greater components taken from the two original ones |

`v1` |
AxVector3 | Original vector to compare against |

`v2` |
AxVector3 | Original vector to compare against |

- Source:

#### (static) Min(result, v1, v2)

Produces a vector whose components are each the lesser corresponding component from two other vectors

##### Parameters:

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

`result` |
AxVector3 | The resulting vector, having the lesser components taken from the two original ones |

`v1` |
AxVector3 | Original vector to compare against |

`v2` |
AxVector3 | Original vector to compare against |

- Source:

#### (static) Normalize(result, v)

Normalizes a vector

##### Parameters:

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

`result` |
AxVector3 | The resulting normalized vector |

`v` |
AxVector3 | The vector to be normalized |

- Source:

#### (static) Scale(result, v1, factor)

Scales a vector by a scalar value

##### Parameters:

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

`result` |
AxVector3 | The resulting vector produced by scaling the given vector |

`v1` |
AxVector3 | Original vector for scaling |

`factor` |
Number | Scaling factor |

- Source:

#### (static) Scale_2(result, v1, v2)

Scales a vector's components by the components of another vector

##### Parameters:

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

`result` |
AxVector3 | The resulting vector produced by scaling the given vector |

`v1` |
AxVector3 | Original vector for scaling |

`v2` |
AxVector3 | Vector containing the per-component scaling factors |

- Source:

#### (static) SetLength(result, v, length)

Produces a vector with an orientation given by another vector and a given length

##### Parameters:

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

`result` |
AxVector3 | The resulting vector |

`v` |
AxVector3 | The vector which holds the orientation |

`length` |
Number | The length value for the new vector |

- Source:

#### (static) SphericalToCartesian(result, azimuth, elevation, radius)

Converts spherical coordinates into Cartesian coordinates
The spherical coordinates are as follow:

##### Parameters:

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

`result` |
AxVector3 | The resulting vector containing the spherical coordinates. |

`azimuth` |
Number | The azimuth component. Range 0 to 2Pi, initial direction is negative Z (east), increasing towards full revolution around positive Y |

`elevation` |
Number | The elevation component. Range -Pi/2 to Pi/2, initial direction is negative Y (down), increasing towards positive Y (up) |

`radius` |
Number | The radial distance component |

- Source:

#### (static) SphericalToCartesian_2(result, spherical)

Converts spherical coordinates into Cartesian coordinates
The spherical coordinates are as follow:
spherical.x - azimuth: range 0 to 2Pi, initial direction is negative Z (east), increasing towards full revolution around positive Y
spherical.y - elevation: range -Pi/2 to Pi/2, initial direction is negative Y (down), increasing towards positive Y (up)
spherical.z - distance

##### Parameters:

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

`result` |
AxVector3 | The resulting vector containing the Cartesian coordinates. |

`spherical` |
AxVector3 | The vector containing the spherical coordinates |

- Source:

#### (static) Subtract(result, v1, v2)

Subtracts two vectors

##### Parameters:

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

`result` |
AxVector3 | The resulting vector produced by subtracting the second vector from the first |

`v1` |
AxVector3 | Vector to subtract from |

`v2` |
AxVector3 | Vector to be subtracted |

- Source:

#### (static) Transform(result, v, transformation)

Transforms a vector by a given tranformation matrix.
This transformation takes into account the translation of the transformation

##### Parameters:

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

`result` |
AxVector3 | The resulting transformed vector |

`v` |
AxVector3 | The original vector to be transformed |

`transformation` |
AxMatrix | The transformation matrix to use |

- Source:

#### (static) TransformNormal(result, v, transformation)

Transforms a vector by a given tranformation matrix.
This transformation does not take into account the translation of the transformation

##### Parameters:

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

`result` |
AxVector3 | The resulting transformed vector |

`v` |
AxVector3 | The original vector to be transformed |

`transformation` |
AxMatrix | The transformation matrix to use |

- Source: