Struct Vector3
Represents a 3D vector using three single-precision floating-point numbers.
Implements
Inherited Members
Namespace: OpenTK
Assembly: OpenTK.dll
Syntax
[Serializable]
public struct Vector3 : IEquatable<Vector3>
Remarks
The Vector3 structure is suitable for interoperation with unmanaged code requiring three consecutive floats.
Constructors
Vector3(Vector2)
Constructs a new Vector3 from the given Vector2.
Declaration
public Vector3(Vector2 v)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector2 | v | The Vector2 to copy components from. |
Vector3(Vector3)
Constructs a new Vector3 from the given Vector3.
Declaration
public Vector3(Vector3 v)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | v | The Vector3 to copy components from. |
Vector3(Vector4)
Constructs a new Vector3 from the given Vector4.
Declaration
public Vector3(Vector4 v)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector4 | v | The Vector4 to copy components from. |
Vector3(Single)
Constructs a new instance.
Declaration
public Vector3(float value)
Parameters
| Type | Name | Description |
|---|---|---|
| Single | value | The value that will initialize this instance. |
Vector3(Single, Single, Single)
Constructs a new Vector3.
Declaration
public Vector3(float x, float y, float z)
Parameters
| Type | Name | Description |
|---|---|---|
| Single | x | The x component of the Vector3. |
| Single | y | The y component of the Vector3. |
| Single | z | The z component of the Vector3. |
Fields
One
Defines an instance with all components set to 1.
Declaration
public static readonly Vector3 One
Field Value
| Type | Description |
|---|---|
| Vector3 |
SizeInBytes
Defines the size of the Vector3 struct in bytes.
Declaration
public static readonly int SizeInBytes
Field Value
| Type | Description |
|---|---|
| Int32 |
UnitX
Defines a unit-length Vector3 that points towards the X-axis.
Declaration
public static readonly Vector3 UnitX
Field Value
| Type | Description |
|---|---|
| Vector3 |
UnitY
Defines a unit-length Vector3 that points towards the Y-axis.
Declaration
public static readonly Vector3 UnitY
Field Value
| Type | Description |
|---|---|
| Vector3 |
UnitZ
Defines a unit-length Vector3 that points towards the Z-axis.
Declaration
public static readonly Vector3 UnitZ
Field Value
| Type | Description |
|---|---|
| Vector3 |
X
The X component of the Vector3.
Declaration
public float X
Field Value
| Type | Description |
|---|---|
| Single |
Y
The Y component of the Vector3.
Declaration
public float Y
Field Value
| Type | Description |
|---|---|
| Single |
Z
The Z component of the Vector3.
Declaration
public float Z
Field Value
| Type | Description |
|---|---|
| Single |
Zero
Defines a zero-length Vector3.
Declaration
public static readonly Vector3 Zero
Field Value
| Type | Description |
|---|---|
| Vector3 |
Properties
Item[Int32]
Gets or sets the value at the index of the Vector.
Declaration
public float this[int index] { get; set; }
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | index |
Property Value
| Type | Description |
|---|---|
| Single |
Length
Gets the length (magnitude) of the vector.
Declaration
public readonly float Length { get; }
Property Value
| Type | Description |
|---|---|
| Single |
See Also
LengthFast
Gets an approximation of the vector length (magnitude).
Declaration
public readonly float LengthFast { get; }
Property Value
| Type | Description |
|---|---|
| Single |
Remarks
This property uses an approximation of the square root function to calculate vector magnitude, with an upper error bound of 0.001.
See Also
LengthSquared
Gets the square of the vector length (magnitude).
Declaration
public readonly float LengthSquared { get; }
Property Value
| Type | Description |
|---|---|
| Single |
Remarks
This property avoids the costly square root operation required by the Length property. This makes it more suitable for comparisons.
See Also
Xy
Gets or sets an OpenTK.Vector2 with the X and Y components of this instance.
Declaration
public Vector2 Xy { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector2 |
Xz
Gets or sets an OpenTK.Vector2 with the X and Z components of this instance.
Declaration
public Vector2 Xz { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector2 |
Xzy
Gets or sets an OpenTK.Vector3 with the X, Z, and Y components of this instance.
Declaration
public Vector3 Xzy { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector3 |
Yx
Gets or sets an OpenTK.Vector2 with the Y and X components of this instance.
Declaration
public Vector2 Yx { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector2 |
Yxz
Gets or sets an OpenTK.Vector3 with the Y, X, and Z components of this instance.
Declaration
public Vector3 Yxz { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector3 |
Yz
Gets or sets an OpenTK.Vector2 with the Y and Z components of this instance.
Declaration
public Vector2 Yz { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector2 |
Yzx
Gets or sets an OpenTK.Vector3 with the Y, Z, and X components of this instance.
Declaration
public Vector3 Yzx { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector3 |
Zx
Gets or sets an OpenTK.Vector2 with the Z and X components of this instance.
Declaration
public Vector2 Zx { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector2 |
Zxy
Gets or sets an OpenTK.Vector3 with the Z, X, and Y components of this instance.
Declaration
public Vector3 Zxy { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector3 |
Zy
Gets or sets an OpenTK.Vector2 with the Z and Y components of this instance.
Declaration
public Vector2 Zy { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector2 |
Zyx
Gets or sets an OpenTK.Vector3 with the Z, Y, and X components of this instance.
Declaration
public Vector3 Zyx { get; set; }
Property Value
| Type | Description |
|---|---|
| Vector3 |
Methods
Add(Vector3, Vector3)
Adds two vectors.
Declaration
public static Vector3 Add(Vector3 a, Vector3 b)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | Left operand. |
| Vector3 | b | Right operand. |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of operation. |
Add(ref Vector3, ref Vector3, out Vector3)
Adds two vectors.
Declaration
public static void Add(ref Vector3 a, ref Vector3 b, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | Left operand. |
| Vector3 | b | Right operand. |
| Vector3 | result | Result of operation. |
BaryCentric(Vector3, Vector3, Vector3, Single, Single)
Interpolate 3 Vectors using Barycentric coordinates
Declaration
public static Vector3 BaryCentric(Vector3 a, Vector3 b, Vector3 c, float u, float v)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First input Vector |
| Vector3 | b | Second input Vector |
| Vector3 | c | Third input Vector |
| Single | u | First Barycentric Coordinate |
| Single | v | Second Barycentric Coordinate |
Returns
| Type | Description |
|---|---|
| Vector3 | a when u=v=0, b when u=1,v=0, c when u=0,v=1, and a linear combination of a,b,c otherwise |
BaryCentric(ref Vector3, ref Vector3, ref Vector3, Single, Single, out Vector3)
Interpolate 3 Vectors using Barycentric coordinates
Declaration
public static void BaryCentric(ref Vector3 a, ref Vector3 b, ref Vector3 c, float u, float v, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First input Vector. |
| Vector3 | b | Second input Vector. |
| Vector3 | c | Third input Vector. |
| Single | u | First Barycentric Coordinate. |
| Single | v | Second Barycentric Coordinate. |
| Vector3 | result | Output Vector. a when u=v=0, b when u=1,v=0, c when u=0,v=1, and a linear combination of a,b,c otherwise |
CalculateAngle(Vector3, Vector3)
Calculates the angle (in radians) between two vectors.
Declaration
public static float CalculateAngle(Vector3 first, Vector3 second)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | first | The first vector. |
| Vector3 | second | The second vector. |
Returns
| Type | Description |
|---|---|
| Single | Angle (in radians) between the vectors. |
Remarks
Note that the returned angle is never bigger than the constant Pi.
CalculateAngle(ref Vector3, ref Vector3, out Single)
Calculates the angle (in radians) between two vectors.
Declaration
public static void CalculateAngle(ref Vector3 first, ref Vector3 second, out float result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | first | The first vector. |
| Vector3 | second | The second vector. |
| Single | result | Angle (in radians) between the vectors. |
Remarks
Note that the returned angle is never bigger than the constant Pi.
Clamp(Vector3, Vector3, Vector3)
Clamp a vector to the given minimum and maximum vectors
Declaration
public static Vector3 Clamp(Vector3 vec, Vector3 min, Vector3 max)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | Input vector |
| Vector3 | min | Minimum vector |
| Vector3 | max | Maximum vector |
Returns
| Type | Description |
|---|---|
| Vector3 | The clamped vector |
Clamp(ref Vector3, ref Vector3, ref Vector3, out Vector3)
Clamp a vector to the given minimum and maximum vectors
Declaration
public static void Clamp(ref Vector3 vec, ref Vector3 min, ref Vector3 max, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | Input vector |
| Vector3 | min | Minimum vector |
| Vector3 | max | Maximum vector |
| Vector3 | result | The clamped vector |
ComponentMax(Vector3, Vector3)
Returns a vector created from the largest of the corresponding components of the given vectors.
Declaration
public static Vector3 ComponentMax(Vector3 a, Vector3 b)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First operand |
| Vector3 | b | Second operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The component-wise maximum |
ComponentMax(ref Vector3, ref Vector3, out Vector3)
Returns a vector created from the largest of the corresponding components of the given vectors.
Declaration
public static void ComponentMax(ref Vector3 a, ref Vector3 b, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First operand |
| Vector3 | b | Second operand |
| Vector3 | result | The component-wise maximum |
ComponentMin(Vector3, Vector3)
Returns a vector created from the smallest of the corresponding components of the given vectors.
Declaration
public static Vector3 ComponentMin(Vector3 a, Vector3 b)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First operand |
| Vector3 | b | Second operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The component-wise minimum |
ComponentMin(ref Vector3, ref Vector3, out Vector3)
Returns a vector created from the smallest of the corresponding components of the given vectors.
Declaration
public static void ComponentMin(ref Vector3 a, ref Vector3 b, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First operand |
| Vector3 | b | Second operand |
| Vector3 | result | The component-wise minimum |
Cross(Vector3, Vector3)
Caclulate the cross (vector) product of two vectors
Declaration
public static Vector3 Cross(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | First operand |
| Vector3 | right | Second operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The cross product of the two inputs |
Cross(ref Vector3, ref Vector3, out Vector3)
Caclulate the cross (vector) product of two vectors
Declaration
public static void Cross(ref Vector3 left, ref Vector3 right, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | First operand |
| Vector3 | right | Second operand |
| Vector3 | result | The cross product of the two inputs |
Remarks
It is incorrect to call this method passing the same variable for
result as for left or
right.
Distance(Vector3, Vector3)
Compute the euclidean distance between two vectors.
Declaration
public static float Distance(Vector3 vec1, Vector3 vec2)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec1 | The first vector |
| Vector3 | vec2 | The second vector |
Returns
| Type | Description |
|---|---|
| Single | The distance |
Distance(ref Vector3, ref Vector3, out Single)
Compute the euclidean distance between two vectors.
Declaration
public static void Distance(ref Vector3 vec1, ref Vector3 vec2, out float result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec1 | The first vector |
| Vector3 | vec2 | The second vector |
| Single | result | The distance |
DistanceSquared(Vector3, Vector3)
Compute the squared euclidean distance between two vectors.
Declaration
public static float DistanceSquared(Vector3 vec1, Vector3 vec2)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec1 | The first vector |
| Vector3 | vec2 | The second vector |
Returns
| Type | Description |
|---|---|
| Single | The squared distance |
DistanceSquared(ref Vector3, ref Vector3, out Single)
Compute the squared euclidean distance between two vectors.
Declaration
public static void DistanceSquared(ref Vector3 vec1, ref Vector3 vec2, out float result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec1 | The first vector |
| Vector3 | vec2 | The second vector |
| Single | result | The squared distance |
Divide(Vector3, Vector3)
Divides a vector by the components of a vector (scale).
Declaration
public static Vector3 Divide(Vector3 vector, Vector3 scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Vector3 | scale | Right operand. |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of the operation. |
Divide(Vector3, Single)
Divides a vector by a scalar.
Declaration
public static Vector3 Divide(Vector3 vector, float scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Single | scale | Right operand. |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of the operation. |
Divide(ref Vector3, ref Vector3, out Vector3)
Divide a vector by the components of a vector (scale).
Declaration
public static void Divide(ref Vector3 vector, ref Vector3 scale, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Vector3 | scale | Right operand. |
| Vector3 | result | Result of the operation. |
Divide(ref Vector3, Single, out Vector3)
Divides a vector by a scalar.
Declaration
public static void Divide(ref Vector3 vector, float scale, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Single | scale | Right operand. |
| Vector3 | result | Result of the operation. |
Dot(Vector3, Vector3)
Calculate the dot (scalar) product of two vectors
Declaration
public static float Dot(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | First operand |
| Vector3 | right | Second operand |
Returns
| Type | Description |
|---|---|
| Single | The dot product of the two inputs |
Dot(ref Vector3, ref Vector3, out Single)
Calculate the dot (scalar) product of two vectors
Declaration
public static void Dot(ref Vector3 left, ref Vector3 right, out float result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | First operand |
| Vector3 | right | Second operand |
| Single | result | The dot product of the two inputs |
Equals(Vector3)
Indicates whether the current vector is equal to another vector.
Declaration
public bool Equals(Vector3 other)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | other | A vector to compare with this vector. |
Returns
| Type | Description |
|---|---|
| Boolean | true if the current vector is equal to the vector parameter; otherwise, false. |
Equals(Object)
Indicates whether this instance and a specified object are equal.
Declaration
public override bool Equals(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| Object | obj | The object to compare to. |
Returns
| Type | Description |
|---|---|
| Boolean | True if the instances are equal; false otherwise. |
Overrides
GetHashCode()
Returns the hashcode for this instance.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| Int32 | A System.Int32 containing the unique hashcode for this instance. |
Overrides
Lerp(Vector3, Vector3, Single)
Returns a new Vector that is the linear blend of the 2 given Vectors
Declaration
public static Vector3 Lerp(Vector3 a, Vector3 b, float blend)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First input vector |
| Vector3 | b | Second input vector |
| Single | blend | The blend factor. a when blend=0, b when blend=1. |
Returns
| Type | Description |
|---|---|
| Vector3 | a when blend=0, b when blend=1, and a linear combination otherwise |
Lerp(ref Vector3, ref Vector3, Single, out Vector3)
Returns a new Vector that is the linear blend of the 2 given Vectors
Declaration
public static void Lerp(ref Vector3 a, ref Vector3 b, float blend, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First input vector |
| Vector3 | b | Second input vector |
| Single | blend | The blend factor. a when blend=0, b when blend=1. |
| Vector3 | result | a when blend=0, b when blend=1, and a linear combination otherwise |
MagnitudeMax(Vector3, Vector3)
Returns the Vector3 with the maximum magnitude. If the magnitudes are equal, the first vector is selected.
Declaration
public static Vector3 MagnitudeMax(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | Left operand |
| Vector3 | right | Right operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The maximum Vector3 |
MagnitudeMax(ref Vector3, ref Vector3, out Vector3)
Returns the Vector3 with the maximum magnitude. If the magnitudes are equal, the first vector is selected.
Declaration
public static void MagnitudeMax(ref Vector3 left, ref Vector3 right, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | Left operand |
| Vector3 | right | Right operand |
| Vector3 | result | The magnitude-wise maximum |
MagnitudeMin(Vector3, Vector3)
Returns the Vector3 with the minimum magnitude. If the magnitudes are equal, the second vector is selected.
Declaration
public static Vector3 MagnitudeMin(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | Left operand |
| Vector3 | right | Right operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The minimum Vector3 |
MagnitudeMin(ref Vector3, ref Vector3, out Vector3)
Returns the Vector3 with the minimum magnitude. If the magnitudes are equal, the second vector is selected.
Declaration
public static void MagnitudeMin(ref Vector3 left, ref Vector3 right, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | Left operand |
| Vector3 | right | Right operand |
| Vector3 | result | The magnitude-wise minimum |
Max(Vector3, Vector3)
Returns the Vector3 with the minimum magnitude
Declaration
[Obsolete("Use MagnitudeMax() instead.")]
public static Vector3 Max(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | Left operand |
| Vector3 | right | Right operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The minimum Vector3 |
Min(Vector3, Vector3)
Returns the Vector3 with the minimum magnitude
Declaration
[Obsolete("Use MagnitudeMin() instead.")]
public static Vector3 Min(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | Left operand |
| Vector3 | right | Right operand |
Returns
| Type | Description |
|---|---|
| Vector3 | The minimum Vector3 |
Multiply(Vector3, Vector3)
Multiplies a vector by the components a vector (scale).
Declaration
public static Vector3 Multiply(Vector3 vector, Vector3 scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Vector3 | scale | Right operand. |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of the operation. |
Multiply(Vector3, Single)
Multiplies a vector by a scalar.
Declaration
public static Vector3 Multiply(Vector3 vector, float scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Single | scale | Right operand. |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of the operation. |
Multiply(ref Vector3, ref Vector3, out Vector3)
Multiplies a vector by the components of a vector (scale).
Declaration
public static void Multiply(ref Vector3 vector, ref Vector3 scale, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Vector3 | scale | Right operand. |
| Vector3 | result | Result of the operation. |
Multiply(ref Vector3, Single, out Vector3)
Multiplies a vector by a scalar.
Declaration
public static void Multiply(ref Vector3 vector, float scale, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | Left operand. |
| Single | scale | Right operand. |
| Vector3 | result | Result of the operation. |
Normalize()
Scales the Vector3 to unit length.
Declaration
public void Normalize()
Normalize(Vector3)
Scale a vector to unit length
Declaration
public static Vector3 Normalize(Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The input vector |
Returns
| Type | Description |
|---|---|
| Vector3 | The normalized vector |
Normalize(ref Vector3, out Vector3)
Scale a vector to unit length
Declaration
public static void Normalize(ref Vector3 vec, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The input vector |
| Vector3 | result | The normalized vector |
Normalized()
Returns a copy of the Vector3 scaled to unit length.
Declaration
public Vector3 Normalized()
Returns
| Type | Description |
|---|---|
| Vector3 |
NormalizeFast()
Scales the Vector3 to approximately unit length.
Declaration
public void NormalizeFast()
NormalizeFast(Vector3)
Scale a vector to approximately unit length
Declaration
public static Vector3 NormalizeFast(Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The input vector |
Returns
| Type | Description |
|---|---|
| Vector3 | The normalized vector |
NormalizeFast(ref Vector3, out Vector3)
Scale a vector to approximately unit length
Declaration
public static void NormalizeFast(ref Vector3 vec, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The input vector |
| Vector3 | result | The normalized vector |
Project(Vector3, Single, Single, Single, Single, Single, Single, Matrix4)
Projects a vector from object space into screen space.
Declaration
public static Vector3 Project(Vector3 vector, float x, float y, float width, float height, float minZ, float maxZ, Matrix4 worldViewProjection)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | The vector to project. |
| Single | x | The X coordinate of the viewport. |
| Single | y | The Y coordinate of the viewport. |
| Single | width | The width of the viewport. |
| Single | height | The height of the viewport. |
| Single | minZ | The minimum depth of the viewport. |
| Single | maxZ | The maximum depth of the viewport. |
| Matrix4 | worldViewProjection | The world-view-projection matrix. |
Returns
| Type | Description |
|---|---|
| Vector3 | The vector in screen space. |
Remarks
To project to normalized device coordinates (NDC) use the following parameters: Project(vector, -1, -1, 2, 2, -1, 1, worldViewProjection).
Subtract(Vector3, Vector3)
Subtract one Vector from another
Declaration
public static Vector3 Subtract(Vector3 a, Vector3 b)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First operand |
| Vector3 | b | Second operand |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of subtraction |
Subtract(ref Vector3, ref Vector3, out Vector3)
Subtract one Vector from another
Declaration
public static void Subtract(ref Vector3 a, ref Vector3 b, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | a | First operand |
| Vector3 | b | Second operand |
| Vector3 | result | Result of subtraction |
ToString()
Returns a System.String that represents the current Vector3.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| String |
Overrides
Transform(Matrix3, Vector3)
Transform a Vector by the given Matrix using right-handed notation
Declaration
public static Vector3 Transform(Matrix3 mat, Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Matrix3 | mat | The desired transformation |
| Vector3 | vec | The vector to transform |
Returns
| Type | Description |
|---|---|
| Vector3 |
Transform(ref Matrix3, ref Vector3, out Vector3)
Transform a Vector by the given Matrix using right-handed notation
Declaration
public static void Transform(ref Matrix3 mat, ref Vector3 vec, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Matrix3 | mat | The desired transformation |
| Vector3 | vec | The vector to transform |
| Vector3 | result | The transformed vector |
Transform(Vector3, Matrix3)
Transform a Vector by the given Matrix
Declaration
public static Vector3 Transform(Vector3 vec, Matrix3 mat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix3 | mat | The desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed vector |
Transform(Vector3, Quaternion)
Transforms a vector by a quaternion rotation.
Declaration
public static Vector3 Transform(Vector3 vec, Quaternion quat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform. |
| Quaternion | quat | The quaternion to rotate the vector by. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the operation. |
Transform(ref Vector3, ref Matrix3, out Vector3)
Transform a Vector by the given Matrix
Declaration
public static void Transform(ref Vector3 vec, ref Matrix3 mat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix3 | mat | The desired transformation |
| Vector3 | result | The transformed vector |
Transform(ref Vector3, ref Quaternion, out Vector3)
Transforms a vector by a quaternion rotation.
Declaration
public static void Transform(ref Vector3 vec, ref Quaternion quat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform. |
| Quaternion | quat | The quaternion to rotate the vector by. |
| Vector3 | result | The result of the operation. |
TransformNormal(Vector3, Matrix4)
Transform a Normal by the given Matrix
Declaration
public static Vector3 TransformNormal(Vector3 norm, Matrix4 mat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | norm | The normal to transform |
| Matrix4 | mat | The desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed normal |
Remarks
This calculates the inverse of the given matrix, use TransformNormalInverse if you already have the inverse to avoid this extra calculation
TransformNormal(ref Vector3, ref Matrix4, out Vector3)
Transform a Normal by the given Matrix
Declaration
public static void TransformNormal(ref Vector3 norm, ref Matrix4 mat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | norm | The normal to transform |
| Matrix4 | mat | The desired transformation |
| Vector3 | result | The transformed normal |
Remarks
This calculates the inverse of the given matrix, use TransformNormalInverse if you already have the inverse to avoid this extra calculation
TransformNormalInverse(Vector3, Matrix4)
Transform a Normal by the (transpose of the) given Matrix
Declaration
public static Vector3 TransformNormalInverse(Vector3 norm, Matrix4 invMat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | norm | The normal to transform |
| Matrix4 | invMat | The inverse of the desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed normal |
Remarks
This version doesn't calculate the inverse matrix. Use this version if you already have the inverse of the desired transform to hand
TransformNormalInverse(ref Vector3, ref Matrix4, out Vector3)
Transform a Normal by the (transpose of the) given Matrix
Declaration
public static void TransformNormalInverse(ref Vector3 norm, ref Matrix4 invMat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | norm | The normal to transform |
| Matrix4 | invMat | The inverse of the desired transformation |
| Vector3 | result | The transformed normal |
Remarks
This version doesn't calculate the inverse matrix. Use this version if you already have the inverse of the desired transform to hand
TransformPerspective(Vector3, Matrix4)
Transform a Vector3 by the given Matrix, and project the resulting Vector4 back to a Vector3
Declaration
public static Vector3 TransformPerspective(Vector3 vec, Matrix4 mat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix4 | mat | The desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed vector |
TransformPerspective(ref Vector3, ref Matrix4, out Vector3)
Transform a Vector3 by the given Matrix, and project the resulting Vector4 back to a Vector3
Declaration
public static void TransformPerspective(ref Vector3 vec, ref Matrix4 mat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix4 | mat | The desired transformation |
| Vector3 | result | The transformed vector |
TransformPosition(Vector3, Matrix4)
Transform a Position by the given Matrix
Declaration
public static Vector3 TransformPosition(Vector3 pos, Matrix4 mat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | pos | The position to transform |
| Matrix4 | mat | The desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed position |
TransformPosition(ref Vector3, ref Matrix4, out Vector3)
Transform a Position by the given Matrix
Declaration
public static void TransformPosition(ref Vector3 pos, ref Matrix4 mat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | pos | The position to transform |
| Matrix4 | mat | The desired transformation |
| Vector3 | result | The transformed position |
TransformVector(Vector3, Matrix4)
Transform a direction vector by the given Matrix Assumes the matrix has a bottom row of (0,0,0,1), that is the translation part is ignored.
Declaration
public static Vector3 TransformVector(Vector3 vec, Matrix4 mat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix4 | mat | The desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed vector |
TransformVector(ref Vector3, ref Matrix4, out Vector3)
Transform a direction vector by the given Matrix Assumes the matrix has a bottom row of (0,0,0,1), that is the translation part is ignored.
Declaration
public static void TransformVector(ref Vector3 vec, ref Matrix4 mat, out Vector3 result)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix4 | mat | The desired transformation |
| Vector3 | result | The transformed vector |
Remarks
It is incorrect to call this method passing the same variable for
result as for vec.
Unproject(Vector3, Single, Single, Single, Single, Single, Single, Matrix4)
Projects a vector from screen space into object space.
Declaration
public static Vector3 Unproject(Vector3 vector, float x, float y, float width, float height, float minZ, float maxZ, Matrix4 inverseWorldViewProjection)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vector | The vector to project. |
| Single | x | The X coordinate of the viewport. |
| Single | y | The Y coordinate of the viewport. |
| Single | width | The width of the viewport. |
| Single | height | The height of the viewport. |
| Single | minZ | The minimum depth of the viewport. |
| Single | maxZ | The maximum depth of the viewport. |
| Matrix4 | inverseWorldViewProjection | The inverse of the world-view-projection matrix. |
Returns
| Type | Description |
|---|---|
| Vector3 | The vector in object space. |
Remarks
To project from normalized device coordinates (NDC) use the following parameters: Project(vector, -1, -1, 2, 2, -1, 1, inverseWorldViewProjection).
Operators
Addition(Vector3, Vector3)
Adds two instances.
Declaration
public static Vector3 operator +(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | The first instance. |
| Vector3 | right | The second instance. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the calculation. |
Division(Vector3, Single)
Divides an instance by a scalar.
Declaration
public static Vector3 operator /(Vector3 vec, float scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The instance. |
| Single | scale | The scalar. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the calculation. |
Equality(Vector3, Vector3)
Compares two instances for equality.
Declaration
public static bool operator ==(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | The first instance. |
| Vector3 | right | The second instance. |
Returns
| Type | Description |
|---|---|
| Boolean | True, if left equals right; false otherwise. |
Inequality(Vector3, Vector3)
Compares two instances for inequality.
Declaration
public static bool operator !=(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | The first instance. |
| Vector3 | right | The second instance. |
Returns
| Type | Description |
|---|---|
| Boolean | True, if left does not equal right; false otherwise. |
Multiply(Matrix3, Vector3)
Transform a Vector by the given Matrix using right-handed notation
Declaration
public static Vector3 operator *(Matrix3 mat, Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Matrix3 | mat | The desired transformation |
| Vector3 | vec | The vector to transform |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed vector |
Multiply(Quaternion, Vector3)
Transforms a vector by a quaternion rotation.
Declaration
public static Vector3 operator *(Quaternion quat, Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Quaternion | quat | The quaternion to rotate the vector by. |
| Vector3 | vec | The vector to transform. |
Returns
| Type | Description |
|---|---|
| Vector3 |
Multiply(Vector3, Matrix3)
Transform a Vector by the given Matrix.
Declaration
public static Vector3 operator *(Vector3 vec, Matrix3 mat)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The vector to transform |
| Matrix3 | mat | The desired transformation |
Returns
| Type | Description |
|---|---|
| Vector3 | The transformed vector |
Multiply(Vector3, Vector3)
Component-wise multiplication between the specified instance by a scale vector.
Declaration
public static Vector3 operator *(Vector3 vec, Vector3 scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | Right operand. |
| Vector3 | scale | Left operand. |
Returns
| Type | Description |
|---|---|
| Vector3 | Result of multiplication. |
Multiply(Vector3, Single)
Multiplies an instance by a scalar.
Declaration
public static Vector3 operator *(Vector3 vec, float scale)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The instance. |
| Single | scale | The scalar. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the calculation. |
Multiply(Single, Vector3)
Multiplies an instance by a scalar.
Declaration
public static Vector3 operator *(float scale, Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Single | scale | The scalar. |
| Vector3 | vec | The instance. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the calculation. |
Subtraction(Vector3, Vector3)
Subtracts two instances.
Declaration
public static Vector3 operator -(Vector3 left, Vector3 right)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | left | The first instance. |
| Vector3 | right | The second instance. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the calculation. |
UnaryNegation(Vector3)
Negates an instance.
Declaration
public static Vector3 operator -(Vector3 vec)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector3 | vec | The instance. |
Returns
| Type | Description |
|---|---|
| Vector3 | The result of the calculation. |