Struct Vector3
Represents a 3D vector using three single-precision floating-point numbers.
Implements
Inherited Members
Namespace: OpenTK
Assembly: cs.temp.dll.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 |
---|---|---|
System.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 |
---|---|---|
System.Single | x | The x component of the Vector3. |
System.Single | y | The y component of the Vector3. |
System.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 |
---|---|
System.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 |
---|---|
System.Single |
Y
The Y component of the Vector3.
Declaration
public float Y
Field Value
Type | Description |
---|---|
System.Single |
Z
The Z component of the Vector3.
Declaration
public float Z
Field Value
Type | Description |
---|---|
System.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 |
---|---|---|
System.Int32 | index |
Property Value
Type | Description |
---|---|
System.Single |
Length
Gets the length (magnitude) of the vector.
Declaration
public float Length { get; }
Property Value
Type | Description |
---|---|
System.Single |
See Also
LengthFast
Gets an approximation of the vector length (magnitude).
Declaration
public float LengthFast { get; }
Property Value
Type | Description |
---|---|
System.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 float LengthSquared { get; }
Property Value
Type | Description |
---|---|
System.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 |
System.Single | u | First Barycentric Coordinate |
System.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. |
System.Single | u | First Barycentric Coordinate. |
System.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 |
---|---|
System.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. |
System.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 |
---|---|
System.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 |
System.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 |
---|---|
System.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 |
System.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. |
System.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. |
System.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 |
---|---|
System.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 |
System.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 |
---|---|
System.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 |
---|---|---|
System.Object | obj | The object to compare to. |
Returns
Type | Description |
---|---|
System.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 |
---|---|
System.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 |
System.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 |
System.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. |
System.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. |
System.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. |
System.Single | x | The X coordinate of the viewport. |
System.Single | y | The Y coordinate of the viewport. |
System.Single | width | The width of the viewport. |
System.Single | height | The height of the viewport. |
System.Single | minZ | The minimum depth of the viewport. |
System.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 |
---|---|
System.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. |
System.Single | x | The X coordinate of the viewport. |
System.Single | y | The Y coordinate of the viewport. |
System.Single | width | The width of the viewport. |
System.Single | height | The height of the viewport. |
System.Single | minZ | The minimum depth of the viewport. |
System.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. |
System.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 |
---|---|
System.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 |
---|---|
System.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. |
System.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 |
---|---|---|
System.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. |