# UnityEngine::Vector3d

Represents a 3D vector with double-precision floating-point components.

## Public Functions

Name | |
---|---|

Vector3d(double x, double y, double z)Initializes a new instance of the Vector3d struct with the given components. | |

Vector3d(float x, float y, float z)Initializes a new instance of the Vector3d struct with the components converted from floats. | |

Vector3d(Vector3 v3)Initializes a new instance of the Vector3d struct by converting a Vector3. | |

Vector3d(double x, double y)Initializes a new instance of the Vector3d struct with the given x and y components. The z component is set to 0. | |

void | Set(double new_x, double new_y, double new_z)Sets the components of the vector to new values. |

void | Scale(Vector3d scale)Scales this vector by multiplying each component with the corresponding component of another vector. |

void | Set(double new_x, double new_y)Sets the components of the vector to new values. |

override int | GetHashCode()Gets the hash code of the vector. |

override bool | Equals(object other)Compares this vector to another object for equality. |

bool | Equals(Vector3d other)Compares this vector to another Vector3d for equality. |

override string | ToString()Returns a string representation of the vector. |

void | Normalize()Returns the normalized vector of this instance. |

Vector3d | operator+(Vector3d a, Vector3d b)Adds two Vector3d instances and returns the result. |

Vector3d | operator-(Vector3d a, Vector3d b)Subtracts one Vector3d instance from another and returns the result. |

Vector3d | operator-(Vector3d a)Negates a Vector3d instance (reverses its direction). |

Vector3d | operator*(Vector3d a, double d)Multiplies a Vector3d by a scalar (double) value. |

Vector3d | operator*(double d, Vector3d a)Multiplies a scalar (double) value by a Vector3d. |

Vector3d | operator/(Vector3d a, double d)Divides a Vector3d by a scalar (double) value. |

bool | operator==(Vector3d lhs, Vector3d rhs)Checks if two Vector3d instances are approximately equal within a small epsilon value. |

bool | operator!=(Vector3d lhs, Vector3d rhs)Checks if two Vector3d instances are not approximately equal within a small epsilon value. |

static | operator Vector3(Vector3d vector3d)Converts a Vector3d to a Vector3 by casting its components to float. |

Vector3d | Lerp(Vector3d from, Vector3d to, double t)Linearly interpolates between two Vector3d instances. |

Vector3d | Slerp(Vector3d from, Vector3d to, double t)Spherically interpolates between two Vector3d instances. |

void | OrthoNormalize(ref Vector3d normal, ref Vector3d tangent)Ortho-normalizes two vectors. |

void | OrthoNormalize(ref Vector3d normal, ref Vector3d tangent, ref Vector3d binormal)Ortho-normalizes three vectors. |

Vector3d | MoveTowards(Vector3d current, Vector3d target, double maxDistanceDelta)Moves a vector towards a target vector by a specified maximum distance. |

Vector3d | RotateTowards(Vector3d current, Vector3d target, double maxRadiansDelta, double maxMagnitudeDelta)Rotates a vector towards a target vector by a specified maximum angle and magnitude change. |

Vector3d | SmoothDamp(Vector3d current, Vector3d target, ref Vector3d currentVelocity, double smoothTime, double maxSpeed)Applies smooth damping to move from the current vector towards the target vector. |

Vector3d | SmoothDamp(Vector3d current, Vector3d target, ref Vector3d currentVelocity, double smoothTime)Applies smooth damping to move from the current vector towards the target vector. |

Vector3d | SmoothDamp(Vector3d current, Vector3d target, ref Vector3d currentVelocity, double smoothTime, double maxSpeed, double deltaTime)Applies smooth damping to move from the current vector towards the target vector. |

Vector3d | Scale(Vector3d a, Vector3d b)Multiplies each component of this vector by the corresponding component of another vector. |

Vector3d | Reflect(Vector3d inDirection, Vector3d inNormal)Reflects the input direction off the plane defined by the normal. |

double | Dot(Vector3d a, Vector3d b)Calculates the dot product of two Vector3d instances. |

Vector3d | Cross(Vector3d lhs, Vector3d rhs)Calculates the cross product of two Vector3d instances. |

Vector3d | Normalize(Vector3d value)Normalizes a vector. |

Vector3d | Project(Vector3d vector, Vector3d onNormal)Projects a vector onto another vector. |

Vector3d | Exclude(Vector3d excludeThis, Vector3d fromThat)Removes a vector's projection onto another vector. |

double | Angle(Vector3d from, Vector3d to)Calculates the angle between two vectors in degrees. |

double | Distance(Vector3d a, Vector3d b)Calculates the Euclidean distance between two 3D vectors. |

Vector3d | ClampMagnitude(Vector3d vector, double maxLength)Clamps the magnitude of a vector to a specified maximum length. |

double | Magnitude(Vector3d a)Calculates the magnitude (length) of a 3D vector. |

double | SqrMagnitude(Vector3d a)Calculates the square of the magnitude (length) of a 3D vector. |

Vector3d | Min(Vector3d lhs, Vector3d rhs)Returns a new vector where each component is the minimum value between the components of two input vectors. |

Vector3d | Max(Vector3d lhs, Vector3d rhs)Returns a new vector where each component is the maximum value between the components of two input vectors. |

double | AngleBetween(Vector3d from, Vector3d to)[Obsolete] Calculates the angle in degrees between two vectors. Use Angle instead. |

## Public Properties

Name | |
---|---|

double | this[int index] Access the components of the vector using an index. |

Vector3d | normalized Gets a normalized copy of the vector. |

double | magnitude Gets the magnitude (length) of the vector. |

double | sqrMagnitude Gets the squared magnitude of the vector. |

Vector3d | zero Shorthand for writing Vector3d(0, 0, 0). |

Vector3d | one Shorthand for writing Vector3d(1, 1, 1). |

Vector3d | right Shorthand for writing Vector3d(1, 0, 0). |

Vector3d | left Shorthand for writing Vector3d(-1, 0, 0). |

Vector3d | up Shorthand for writing Vector3d(0, 1, 0). |

Vector3d | down Shorthand for writing Vector3d(0, -1, 0). |

Vector3d | forward Shorthand for writing Vector3d(0, 0, 1). |

Vector3d | back Shorthand for writing Vector3d(0, 0, -1). |

Vector3d | fwd Shorthand for writing Vector3d(0, 0, 1). |

## Public Attributes

Name | |
---|---|

const float | kEpsilon A small value used for approximate equality checks. |

double | x The x component of the vector. |

double | y The y component of the vector. |

double | z The z component of the vector. |

## Public Functions Documentation

### function Vector3d

`Vector3d(`

double x,

double y,

double z

)

Initializes a new instance of the Vector3d struct with the given components.

**Parameters**:

**x**The x-component of the vector.**y**The y-component of the vector.**z**The z-component of the vector.

### function Vector3d

`Vector3d(`

float x,

float y,

float z

)

Initializes a new instance of the Vector3d struct with the components converted from floats.

**Parameters**:

**x**The x-component of the vector as a float.**y**The y-component of the vector as a float.**z**The z-component of the vector as a float.

### function Vector3d

`Vector3d(`

Vector3 v3

)

Initializes a new instance of the Vector3d struct by converting a Vector3.

**Parameters**:

**v3**A Vector3 to convert into a Vector3d.

### function Vector3d

`Vector3d(`

double x,

double y

)

Initializes a new instance of the Vector3d struct with the given x and y components. The z component is set to 0.

**Parameters**:

**x**The x-component of the vector.**y**The y-component of the vector.

### function Set

`void Set(`

double new_x,

double new_y,

double new_z

)

Sets the components of the vector to new values.

**Parameters**:

**new_x**The new x-component.**new_y**The new y-component.**new_z**The new z-component.

### function Scale

`void Scale(`

Vector3d scale

)

Scales this vector by multiplying each component with the corresponding component of another vector.

**Parameters**:

**scale**The vector by which to scale this vector.

### function Set

`void Set(`

double new_x,

double new_y

)

Sets the components of the vector to new values.

**Parameters**:

**new_x**The new x-component.**new_y**The new y-component.

### function GetHashCode

`override int GetHashCode()`

Gets the hash code of the vector.

**Return**: The hash code of the vector.

### function Equals

`override bool Equals(`

object other

)

Compares this vector to another object for equality.

**Parameters**:

**other**The object to compare to this vector.

**Return**: True if the other object is a Vector3d and has the same components as this vector, false otherwise.

### function Equals

`bool Equals(`

Vector3d other

)

Compares this vector to another Vector3d for equality.

**Parameters**:

**other**The vector to compare to this vector.

**Return**: True if the other vector has the same components as this vector, false otherwise.

### function ToString

`override string ToString()`

Returns a string representation of the vector.

**Return**: A string representation of the vector in the format "(x, y, z)".

### function Normalize

`void Normalize()`

Returns the normalized vector of this instance.

### function operator+

`static Vector3d operator+(`

Vector3d a,

Vector3d b

)

Adds two Vector3d instances and returns the result.

**Parameters**:

**a**The first vector to add.**b**The second vector to add.

**Return**: The result of adding the two vectors.

### function operator-

`static Vector3d operator-(`

Vector3d a,

Vector3d b

)

Subtracts one Vector3d instance from another and returns the result.

**Parameters**:

**a**The vector to subtract from.**b**The vector to subtract.

**Return**: The result of subtracting the second vector from the first.

### function operator-

`static Vector3d operator-(`

Vector3d a

)

Negates a Vector3d instance (reverses its direction).

**Parameters**:

**a**The vector to negate.

**Return**: The negated vector.

### function operator*

`static Vector3d operator*(`

Vector3d a,

double d

)

Multiplies a Vector3d by a scalar (double) value.

**Parameters**:

**a**The vector to multiply.**d**The scalar value to multiply by.

**Return**: The result of the multiplication.

### function operator*

`static Vector3d operator*(`

double d,

Vector3d a

)

Multiplies a scalar (double) value by a Vector3d.

**Parameters**:

**d**The scalar value to multiply.**a**The vector to multiply.

**Return**: The result of the multiplication.

### function operator/

`static Vector3d operator/(`

Vector3d a,

double d

)

Divides a Vector3d by a scalar (double) value.

**Parameters**:

**a**The vector to divide.**d**The scalar value to divide by.

**Return**: The result of the division.

### function operator==

`static bool operator==(`

Vector3d lhs,

Vector3d rhs

)

Checks if two Vector3d instances are approximately equal within a small epsilon value.

**Parameters**:

**lhs**The first vector to compare.**rhs**The second vector to compare.

**Return**: True if the two vectors are approximately equal, false otherwise.

### function operator!=

`static bool operator!=(`

Vector3d lhs,

Vector3d rhs

)

Checks if two Vector3d instances are not approximately equal within a small epsilon value.

**Parameters**:

**lhs**The first vector to compare.**rhs**The second vector to compare.

**Return**: True if the two vectors are not approximately equal, false otherwise.

### function operator Vector3

`static explicit static operator Vector3(`

Vector3d vector3d

)

Converts a Vector3d to a Vector3 by casting its components to float.

**Parameters**:

**vector3d**The Vector3d to convert.

**Return**: A new Vector3 with float components.

### function Lerp

`static Vector3d Lerp(`

Vector3d from,

Vector3d to,

double t

)

Linearly interpolates between two Vector3d instances.

**Parameters**:

**from**The start vector.**to**The end vector.**t**The interpolation parameter (0 to 1).

**Return**: The interpolated vector.

### function Slerp

`static Vector3d Slerp(`

Vector3d from,

Vector3d to,

double t

)

Spherically interpolates between two Vector3d instances.

**Parameters**:

**from**The start vector.**to**The end vector.**t**The interpolation parameter (0 to 1).

**Return**: The spherically interpolated vector.

### function OrthoNormalize

`static void OrthoNormalize(`

ref Vector3d normal,

ref Vector3d tangent

)

Ortho-normalizes two vectors.

**Parameters**:

**normal**The first vector to ortho-normalize.**tangent**The second vector to ortho-normalize.

### function OrthoNormalize

`static void OrthoNormalize(`

ref Vector3d normal,

ref Vector3d tangent,

ref Vector3d binormal

)

Ortho-normalizes three vectors.

**Parameters**:

**normal**The first vector to ortho-normalize.**tangent**The second vector to ortho-normalize.**binormal**The third vector to ortho-normalize.

### function MoveTowards

`static Vector3d MoveTowards(`

Vector3d current,

Vector3d target,

double maxDistanceDelta

)

Moves a vector towards a target vector by a specified maximum distance.

**Parameters**:

**current**The current vector.**target**The target vector.**maxDistanceDelta**The maximum distance to move towards the target.

**Return**: The resulting vector after moving towards the target.

### function RotateTowards

`static Vector3d RotateTowards(`

Vector3d current,

Vector3d target,

double maxRadiansDelta,

double maxMagnitudeDelta

)

Rotates a vector towards a target vector by a specified maximum angle and magnitude change.

**Parameters**:

**current**The current vector.**target**The target vector.**maxRadiansDelta**The maximum angle (in radians) to rotate.**maxMagnitudeDelta**The maximum change in magnitude.

**Return**: The resulting vector after rotation towards the target.

### function SmoothDamp

`static Vector3d SmoothDamp(`

Vector3d current,

Vector3d target,

ref Vector3d currentVelocity,

double smoothTime,

double maxSpeed

)

Applies smooth damping to move from the current vector towards the target vector.

**Parameters**:

**current**The current vector.**target**The target vector.**currentVelocity**The current velocity of the vector.**smoothTime**The time to reach the target.**maxSpeed**The maximum speed of the vector.

**Return**: The resulting vector after applying smooth damping.

### function SmoothDamp

`static Vector3d SmoothDamp(`

Vector3d current,

Vector3d target,

ref Vector3d currentVelocity,

double smoothTime

)

Applies smooth damping to move from the current vector towards the target vector.

**Parameters**:

**current**The current vector.**target**The target vector.**currentVelocity**The current velocity of the vector.**smoothTime**The time to reach the target.

**Return**: The resulting vector after applying smooth damping.

### function SmoothDamp

`static Vector3d SmoothDamp(`

Vector3d current,

Vector3d target,

ref Vector3d currentVelocity,

double smoothTime,

double maxSpeed,

double deltaTime

)

Applies smooth damping to move from the current vector towards the target vector.

**Parameters**:

**current**The current vector.**target**The target vector.**currentVelocity**The current velocity of the vector.**smoothTime**The time to reach the target.**maxSpeed**The maximum speed of the vector.**deltaTime**The time interval between function calls.

**Return**: The resulting vector after applying smooth damping.

### function Scale

`static Vector3d Scale(`

Vector3d a,

Vector3d b

)

Multiplies each component of this vector by the corresponding component of another vector.

**Parameters**:

**a**The first vector.**b**The second vector.

**Return**: A new vector containing the component-wise product of the input vectors.

### function Reflect

`static Vector3d Reflect(`

Vector3d inDirection,

Vector3d inNormal

)

Reflects the input direction off the plane defined by the normal.

**Parameters**:

**inDirection**The direction to reflect.**inNormal**The normal to reflect off of.

**Return**: The reflected direction.

### function Dot

`static double Dot(`

Vector3d a,

Vector3d b

)

Calculates the dot product of two Vector3d instances.

**Parameters**:

**a**The first vector.**b**The second vector.

**Return**: The dot product of the two vectors.

### function Cross

`static Vector3d Cross(`

Vector3d lhs,

Vector3d rhs

)

Calculates the cross product of two Vector3d instances.

**Parameters**:

**lhs**The first vector.**rhs**The second vector.

**Return**: The cross product of the two vectors.

### function Normalize

`static Vector3d Normalize(`

Vector3d value

)

Normalizes a vector.

**Parameters**:

**value**The vector to normalize.

**Return**: The normalized vector.

### function Project

`static Vector3d Project(`

Vector3d vector,

Vector3d onNormal

)

Projects a vector onto another vector.

**Parameters**:

**vector**The vector to project.**onNormal**The vector onto which to project.

**Return**: The projection of the vector onto the other vector.

### function Exclude

`static Vector3d Exclude(`

Vector3d excludeThis,

Vector3d fromThat

)

Removes a vector's projection onto another vector.

**Parameters**:

**excludeThis**The vector to exclude from.**fromThat**The vector to remove the projection from.

**Return**: The vector with the projection removed.

### function Angle

`static double Angle(`

Vector3d from,

Vector3d to

)

Calculates the angle between two vectors in degrees.

**Parameters**:

**from**The first vector.**to**The second vector.

**Return**: The angle between the two vectors in degrees.

### function Distance

`static double Distance(`

Vector3d a,

Vector3d b

)

Calculates the Euclidean distance between two 3D vectors.

**Parameters**:

**a**The first vector.**b**The second vector.

**Return**: The distance between the two vectors.

### function ClampMagnitude

`static Vector3d ClampMagnitude(`

Vector3d vector,

double maxLength

)

Clamps the magnitude of a vector to a specified maximum length.

**Parameters**:

**vector**The vector to clamp.**maxLength**The maximum length to which the vector will be clamped.

**Return**: If the magnitude of the input vector is greater than *maxLength* , it returns a vector with the same direction as the original but with a magnitude of *maxLength* . If the magnitude of the input vector is less than or equal to *maxLength* , it returns the original vector.

### function Magnitude

`static double Magnitude(`

Vector3d a

)

Calculates the magnitude (length) of a 3D vector.

**Parameters**:

**a**The input vector.

**Return**: The magnitude of the vector.

### function SqrMagnitude

`static double SqrMagnitude(`

Vector3d a

)

Calculates the square of the magnitude (length) of a 3D vector.

**Parameters**:

**a**The input vector.

**Return**: The square of the magnitude of the vector.

### function Min

`static Vector3d Min(`

Vector3d lhs,

Vector3d rhs

)

Returns a new vector where each component is the minimum value between the components of two input vectors.

**Parameters**:

**lhs**The first vector.**rhs**The second vector.

**Return**: The vector with components equal to the minimum values of the input vectors.

### function Max

`static Vector3d Max(`

Vector3d lhs,

Vector3d rhs

)

Returns a new vector where each component is the maximum value between the components of two input vectors.

**Parameters**:

**lhs**The first vector.**rhs**The second vector.

**Return**: The vector with components equal to the maximum values of the input vectors.

### function AngleBetween

`static double AngleBetween(`

Vector3d from,

Vector3d to

)

[Obsolete] Calculates the angle in degrees between two vectors. Use Angle instead.

**Parameters**:

**from**The first vector.**to**The second vector.

**Return**: The angle in degrees between the two vectors.

## Public Property Documentation

### property this[int index]

`double this[int index];`

Access the components of the vector using an index.

**Parameters**:

**index**The index (0 for x, 1 for y, 2 for z).

**Return**: The value of the component at the specified index.

### property normalized

`Vector3d normalized;`

Gets a normalized copy of the vector.

### property magnitude

`double magnitude;`

Gets the magnitude (length) of the vector.

### property sqrMagnitude

`double sqrMagnitude;`

Gets the squared magnitude of the vector.

### property zero

`static Vector3d zero;`

Shorthand for writing Vector3d(0, 0, 0).

### property one

`static Vector3d one;`

Shorthand for writing Vector3d(1, 1, 1).

### property right

`static Vector3d right;`

Shorthand for writing Vector3d(1, 0, 0).

### property left

`static Vector3d left;`

Shorthand for writing Vector3d(-1, 0, 0).

### property up

`static Vector3d up;`

Shorthand for writing Vector3d(0, 1, 0).

### property down

`static Vector3d down;`

Shorthand for writing Vector3d(0, -1, 0).

### property forward

`static Vector3d forward;`

Shorthand for writing Vector3d(0, 0, 1).

### property back

`static Vector3d back;`

Shorthand for writing Vector3d(0, 0, -1).

### property fwd

`static Vector3d fwd;`

Shorthand for writing Vector3d(0, 0, 1).

## Public Attributes Documentation

### variable kEpsilon

`static const float kEpsilon = 1E-05f;`

A small value used for approximate equality checks.

### variable x

`double x;`

The x component of the vector.

### variable y

`double y;`

The y component of the vector.

### variable z

`double z;`

The z component of the vector.