# Vector3 Struct

## Definition

Important

Some information relates to prerelease product that may be substantially modified before itâ€™s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Represents a vector with three single-precision floating-point values.

`public value class Vector3 : IEquatable<System::Numerics::Vector3>, IFormattable`

`public struct Vector3 : IEquatable<System.Numerics.Vector3>, IFormattable`

```
type Vector3 = struct
interface IFormattable
```

```
Public Structure Vector3
Implements IEquatable(Of Vector3), IFormattable
```

- Inheritance

- Implements

## Remarks

The Vector3 structure provides support for hardware acceleration.

For matrix transformations, the Vector2, Vector3, and Vector4 instances are represented as rows: a vector *v* is transformed by a matrix *M* with *vM* multiplication.

## Constructors

Vector3(ReadOnlySpan<Single>) |
Constructs a vector from the given ReadOnlySpan<T>. The span must contain at least 3 elements. |

Vector3(Single) |
Creates a new Vector3 object whose three elements have the same value. |

Vector3(Single, Single, Single) |
Creates a vector whose elements have the specified values. |

Vector3(Vector2, Single) |
Creates a new Vector3 object from the specified Vector2 object and the specified value. |

## Fields

X |
The X component of the vector. |

Y |
The Y component of the vector. |

Z |
The Z component of the vector. |

## Properties

Item[Int32] |
Gets or sets the element at the specified index. |

One |
Gets a vector whose 3 elements are equal to one. |

UnitX |
Gets the vector (1,0,0). |

UnitY |
Gets the vector (0,1,0). |

UnitZ |
Gets the vector (0,0,1). |

Zero |
Gets a vector whose 3 elements are equal to zero. |

## Methods

Abs(Vector3) |
Returns a vector whose elements are the absolute values of each of the specified vector's elements. |

Add(Vector3, Vector3) |
Adds two vectors together. |

Clamp(Vector3, Vector3, Vector3) |
Restricts a vector between a minimum and a maximum value. |

CopyTo(Single[]) |
Copies the elements of the vector to a specified array. |

CopyTo(Single[], Int32) |
Copies the elements of the vector to a specified array starting at a specified index position. |

CopyTo(Span<Single>) |
Copies the vector to the given Span<T>. The length of the destination span must be at least 3. |

Cross(Vector3, Vector3) |
Computes the cross product of two vectors. |

Distance(Vector3, Vector3) |
Computes the Euclidean distance between the two given points. |

DistanceSquared(Vector3, Vector3) |
Returns the Euclidean distance squared between two specified points. |

Divide(Vector3, Single) |
Divides the specified vector by a specified scalar value. |

Divide(Vector3, Vector3) |
Divides the first vector by the second. |

Dot(Vector3, Vector3) |
Returns the dot product of two vectors. |

Equals(Object) |
Returns a value that indicates whether this instance and a specified object are equal. |

Equals(Vector3) |
Returns a value that indicates whether this instance and another vector are equal. |

GetHashCode() |
Returns the hash code for this instance. |

Length() |
Returns the length of this vector object. |

LengthSquared() |
Returns the length of the vector squared. |

Lerp(Vector3, Vector3, Single) |
Performs a linear interpolation between two vectors based on the given weighting. |

Max(Vector3, Vector3) |
Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. |

Min(Vector3, Vector3) |
Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. |

Multiply(Single, Vector3) |
Multiplies a scalar value by a specified vector. |

Multiply(Vector3, Single) |
Multiplies a vector by a specified scalar. |

Multiply(Vector3, Vector3) |
Returns a new vector whose values are the product of each pair of elements in two specified vectors. |

Negate(Vector3) |
Negates a specified vector. |

Normalize(Vector3) |
Returns a vector with the same direction as the specified vector, but with a length of one. |

Reflect(Vector3, Vector3) |
Returns the reflection of a vector off a surface that has the specified normal. |

SquareRoot(Vector3) |
Returns a vector whose elements are the square root of each of a specified vector's elements. |

Subtract(Vector3, Vector3) |
Subtracts the second vector from the first. |

ToString() |
Returns the string representation of the current instance using default formatting. |

ToString(String) |
Returns the string representation of the current instance using the specified format string to format individual elements. |

ToString(String, IFormatProvider) |
Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. |

Transform(Vector3, Matrix4x4) |
Transforms a vector by a specified 4x4 matrix. |

Transform(Vector3, Quaternion) |
Transforms a vector by the specified Quaternion rotation value. |

TransformNormal(Vector3, Matrix4x4) |
Transforms a vector normal by the given 4x4 matrix. |

TryCopyTo(Span<Single>) |
Attempts to copy the vector to the given Span<T>. The length of the destination span must be at least 3. |

## Operators

Addition(Vector3, Vector3) |
Adds two vectors together. |

Division(Vector3, Single) |
Divides the specified vector by a specified scalar value. |

Division(Vector3, Vector3) |
Divides the first vector by the second. |

Equality(Vector3, Vector3) |
Returns a value that indicates whether each pair of elements in two specified vectors is equal. |

Inequality(Vector3, Vector3) |
Returns a value that indicates whether two specified vectors are not equal. |

Multiply(Single, Vector3) |
Multiples the scalar value by the specified vector. |

Multiply(Vector3, Single) |
Multiples the specified vector by the specified scalar value. |

Multiply(Vector3, Vector3) |
Returns a new vector whose values are the product of each pair of elements in two specified vectors. |

Subtraction(Vector3, Vector3) |
Subtracts the second vector from the first. |

UnaryNegation(Vector3) |
Negates the specified vector. |

## Extension Methods

AsVector128(Vector3) |
Reinterprets a Vector3 as a new Vector128<T>. |