30 using System.Globalization;
31 using System.Runtime.InteropServices;
32 using System.ComponentModel;
34 namespace SiliconStudio.Core.Mathematics
39 [DataContract(
"float4")]
41 [StructLayout(LayoutKind.Sequential, Pack = 4)]
47 public static readonly
int SizeInBytes = Marshal.SizeOf(typeof(
Vector4));
166 throw new ArgumentNullException(
"values");
167 if (values.Length != 4)
168 throw new ArgumentOutOfRangeException(
"values",
"There must be four and only four input values for Vector4.");
179 public bool IsNormalized
191 public float this[
int index]
203 throw new ArgumentOutOfRangeException(
"index",
"Indices for Vector4 run from 0 to 3, inclusive.");
210 case 0: X = value;
break;
211 case 1: Y = value;
break;
212 case 2: Z = value;
break;
213 case 3: W = value;
break;
214 default:
throw new ArgumentOutOfRangeException(
"index",
"Indices for Vector4 run from 0 to 3, inclusive.");
229 return (
float)Math.Sqrt((X * X) + (Y * Y) + (Z * Z) + (W * W));
242 return (X * X) + (Y * Y) + (Z * Z) + (W * W);
250 float length = Length();
253 float inverse = 1.0f / length;
265 public void Pow(
float exponent)
267 X = (float)Math.Pow(X, exponent);
268 Y = (float)Math.Pow(Y, exponent);
269 Z = (float)Math.Pow(Z, exponent);
270 W = (float)Math.Pow(W, exponent);
279 return new float[] { X, Y, Z, W };
290 result =
new Vector4(left.X + right.X, left.Y + right.Y, left.Z + right.Z, left.W + right.W);
301 return new Vector4(left.
X + right.
X, left.
Y + right.
Y, left.
Z + right.
Z, left.
W + right.
W);
312 result =
new Vector4(left.X - right.X, left.Y - right.Y, left.Z - right.Z, left.W - right.W);
323 return new Vector4(left.
X - right.
X, left.
Y - right.
Y, left.
Z - right.
Z, left.
W - right.
W);
334 result =
new Vector4(value.X * scale, value.Y * scale, value.Z * scale, value.W * scale);
345 return new Vector4(value.
X * scale, value.
Y * scale, value.
Z * scale, value.
W * scale);
356 result =
new Vector4(left.X * right.X, left.Y * right.Y, left.Z * right.Z, left.W * right.W);
367 return new Vector4(left.
X * right.
X, left.
Y * right.
Y, left.
Z * right.
Z, left.
W * right.
W);
378 result =
new Vector4(value.X / scale, value.Y / scale, value.Z / scale, value.W / scale);
389 return new Vector4(value.
X / scale, value.
Y / scale, value.
Z / scale, value.
W / scale);
400 result =
new Vector4(left.X / right.X, left.Y / right.Y, left.Z / right.Z, left.W / right.W);
411 return new Vector4(left.
X / right.
X, left.
Y / right.
Y, left.
Z / right.
Z, left.
W / right.
W);
421 result =
new Vector4(-value.X, -value.Y, -value.Z, -value.W);
431 return new Vector4(-value.
X, -value.
Y, -value.
Z, -value.
W);
445 result =
new Vector4((value1.X + (amount1 * (value2.X - value1.X))) + (amount2 * (value3.X - value1.X)),
446 (value1.Y + (amount1 * (value2.Y - value1.Y))) + (amount2 * (value3.Y - value1.Y)),
447 (value1.Z + (amount1 * (value2.Z - value1.Z))) + (amount2 * (value3.Z - value1.Z)),
448 (value1.W + (amount1 * (value2.W - value1.W))) + (amount2 * (value3.W - value1.W)));
463 Barycentric(ref value1, ref value2, ref value3, amount1, amount2, out result);
477 x = (x > max.X) ? max.X : x;
478 x = (x < min.X) ? min.X : x;
481 y = (y > max.Y) ? max.Y : y;
482 y = (y < min.Y) ? min.Y :
y;
485 z = (z > max.Z) ? max.Z : z;
486 z = (z < min.Z) ? min.Z :
z;
489 w = (w > max.W) ? max.W : w;
490 w = (w < min.W) ? min.W : w;
492 result =
new Vector4(x, y, z, w);
505 Clamp(ref value, ref min, ref max, out result);
521 float x = value1.X - value2.X;
522 float y = value1.Y - value2.Y;
523 float z = value1.Z - value2.Z;
524 float w = value1.W - value2.W;
526 result = (float)Math.Sqrt((x * x) + (y * y) + (z * z) + (w * w));
541 float x = value1.X - value2.X;
542 float y = value1.Y - value2.Y;
543 float z = value1.Z - value2.Z;
544 float w = value1.W - value2.W;
546 return (
float)Math.Sqrt((x * x) + (y * y) + (z *
z) + (w * w));
564 float x = value1.X - value2.X;
565 float y = value1.Y - value2.Y;
566 float z = value1.Z - value2.Z;
567 float w = value1.W - value2.W;
569 result = (x * x) + (y * y) + (z *
z) + (w * w);
587 float x = value1.X - value2.X;
588 float y = value1.Y - value2.Y;
589 float z = value1.Z - value2.Z;
590 float w = value1.W - value2.W;
592 return (x * x) + (y *
y) + (z * z) + (w * w);
603 result = (left.X * right.X) + (left.Y * right.Y) + (left.Z * right.Z) + (left.W * right.W);
614 return (left.
X * right.
X) + (left.Y * right.Y) + (left.
Z * right.
Z) + (left.W * right.W);
654 result.X = start.X + ((end.X - start.X) * amount);
655 result.Y = start.Y + ((end.Y - start.Y) * amount);
656 result.Z = start.Z + ((end.Z - start.Z) * amount);
657 result.W = start.W + ((end.W - start.W) * amount);
675 Lerp(ref start, ref end, amount, out result);
688 amount = (amount > 1.0f) ? 1.0f : ((amount < 0.0f) ? 0.0f : amount);
689 amount = (amount * amount) * (3.0f - (2.0f * amount));
691 result.X = start.X + ((end.X - start.X) * amount);
692 result.Y = start.Y + ((end.Y - start.Y) * amount);
693 result.Z = start.Z + ((end.Z - start.Z) * amount);
694 result.W = start.W + ((end.W - start.W) * amount);
707 SmoothStep(ref start, ref end, amount, out result);
722 float squared = amount * amount;
723 float cubed = amount * squared;
724 float part1 = ((2.0f * cubed) - (3.0f * squared)) + 1.0f;
725 float part2 = (-2.0f * cubed) + (3.0f * squared);
726 float part3 = (cubed - (2.0f * squared)) + amount;
727 float part4 = cubed - squared;
729 result =
new Vector4((((value1.X * part1) + (value2.X * part2)) + (tangent1.X * part3)) + (tangent2.X * part4),
730 (((value1.Y * part1) + (value2.Y * part2)) + (tangent1.Y * part3)) + (tangent2.Y * part4),
731 (((value1.Z * part1) + (value2.Z * part2)) + (tangent1.Z * part3)) + (tangent2.Z * part4),
732 (((value1.W * part1) + (value2.W * part2)) + (tangent1.W * part3)) + (tangent2.W * part4));
747 Hermite(ref value1, ref tangent1, ref value2, ref tangent2, amount, out result);
762 float squared = amount * amount;
763 float cubed = amount * squared;
765 result.X = 0.5f * ((((2.0f * value2.X) + ((-value1.X + value3.X) * amount)) + (((((2.0f * value1.X) - (5.0f * value2.X)) + (4.0f * value3.X)) - value4.X) * squared)) + ((((-value1.X + (3.0f * value2.X)) - (3.0f * value3.X)) + value4.X) * cubed));
766 result.Y = 0.5f * ((((2.0f * value2.Y) + ((-value1.Y + value3.Y) * amount)) + (((((2.0f * value1.Y) - (5.0f * value2.Y)) + (4.0f * value3.Y)) - value4.Y) * squared)) + ((((-value1.Y + (3.0f * value2.Y)) - (3.0f * value3.Y)) + value4.Y) * cubed));
767 result.Z = 0.5f * ((((2.0f * value2.Z) + ((-value1.Z + value3.Z) * amount)) + (((((2.0f * value1.Z) - (5.0f * value2.Z)) + (4.0f * value3.Z)) - value4.Z) * squared)) + ((((-value1.Z + (3.0f * value2.Z)) - (3.0f * value3.Z)) + value4.Z) * cubed));
768 result.W = 0.5f * ((((2.0f * value2.W) + ((-value1.W + value3.W) * amount)) + (((((2.0f * value1.W) - (5.0f * value2.W)) + (4.0f * value3.W)) - value4.W) * squared)) + ((((-value1.W + (3.0f * value2.W)) - (3.0f * value3.W)) + value4.W) * cubed));
783 CatmullRom(ref value1, ref value2, ref value3, ref value4, amount, out result);
795 result.X = (left.X > right.X) ? left.X : right.X;
796 result.Y = (left.Y > right.Y) ? left.Y : right.Y;
797 result.Z = (left.Z > right.Z) ? left.Z : right.Z;
798 result.W = (left.W > right.W) ? left.W : right.W;
810 Max(ref left, ref right, out result);
822 result.X = (left.X < right.X) ? left.X : right.X;
823 result.Y = (left.Y < right.Y) ? left.Y : right.Y;
824 result.Z = (left.Z < right.Z) ? left.Z : right.Z;
825 result.W = (left.W < right.W) ? left.W : right.W;
837 Min(ref left, ref right, out result);
867 throw new ArgumentNullException(
"source");
868 if (destination == null)
869 throw new ArgumentNullException(
"destination");
870 if (destination.
Length < source.Length)
871 throw new ArgumentOutOfRangeException(
"destination",
"The destination array must be of same length or larger length than the source array.");
873 for (
int i = 0; i < source.Length; ++i)
877 for (
int r = 0; r < i; ++r)
879 newvector -= (Vector4.Dot(destination[r], newvector) /
Vector4.
Dot(destination[r], destination[r])) * destination[r];
882 destination[i] = newvector;
914 throw new ArgumentNullException(
"source");
915 if (destination == null)
916 throw new ArgumentNullException(
"destination");
917 if (destination.
Length < source.Length)
918 throw new ArgumentOutOfRangeException(
"destination",
"The destination array must be of same length or larger length than the source array.");
920 for (
int i = 0; i < source.Length; ++i)
924 for (
int r = 0; r < i; ++r)
926 newvector -= Vector4.Dot(destination[r], newvector) * destination[r];
929 newvector.Normalize();
930 destination[i] = newvector;
942 float x = rotation.X + rotation.X;
943 float y = rotation.Y + rotation.Y;
944 float z = rotation.Z + rotation.Z;
945 float wx = rotation.W * x;
946 float wy = rotation.W *
y;
947 float wz = rotation.W *
z;
948 float xx = rotation.X * x;
949 float xy = rotation.X *
y;
950 float xz = rotation.X *
z;
951 float yy = rotation.Y *
y;
952 float yz = rotation.Y *
z;
953 float zz = rotation.Z *
z;
956 ((vector.X * ((1.0f - yy) - zz)) + (vector.Y * (xy - wz))) + (vector.Z * (xz + wy)),
957 ((vector.X * (xy + wz)) + (vector.Y * ((1.0f - xx) - zz))) + (vector.Z * (yz - wx)),
958 ((vector.X * (xz - wy)) + (vector.Y * (yz + wx))) + (vector.Z * ((1.0f - xx) - yy)),
971 Transform(ref vector, ref rotation, out result);
987 throw new ArgumentNullException(
"source");
988 if (destination == null)
989 throw new ArgumentNullException(
"destination");
991 throw new ArgumentOutOfRangeException(
"destination",
"The destination array must be of same length or larger length than the source array.");
993 float x = rotation.X + rotation.X;
994 float y = rotation.Y + rotation.Y;
995 float z = rotation.Z + rotation.Z;
996 float wx = rotation.W * x;
997 float wy = rotation.W *
y;
998 float wz = rotation.W *
z;
999 float xx = rotation.X * x;
1000 float xy = rotation.X *
y;
1001 float xz = rotation.X *
z;
1002 float yy = rotation.Y *
y;
1003 float yz = rotation.Y *
z;
1004 float zz = rotation.Z *
z;
1006 float num1 = ((1.0f - yy) - zz);
1007 float num2 = (xy - wz);
1008 float num3 = (xz + wy);
1009 float num4 = (xy + wz);
1010 float num5 = ((1.0f - xx) - zz);
1011 float num6 = (yz - wx);
1012 float num7 = (xz - wy);
1013 float num8 = (yz + wx);
1014 float num9 = ((1.0f - xx) - yy);
1016 for (
int i = 0; i < source.Length; ++i)
1019 ((source[i].X * num1) + (source[i].Y * num2)) + (source[i].Z * num3),
1020 ((source[i].X * num4) + (source[i].Y * num5)) + (source[i].Z * num6),
1021 ((source[i].X * num7) + (source[i].Y * num8)) + (source[i].Z * num9),
1035 (vector.X * transform.M11) + (vector.Y * transform.M21) + (vector.Z * transform.M31) + (vector.W * transform.M41),
1036 (vector.X * transform.M12) + (vector.Y * transform.M22) + (vector.Z * transform.M32) + (vector.W * transform.M42),
1037 (vector.X * transform.M13) + (vector.Y * transform.M23) + (vector.Z * transform.M33) + (vector.W * transform.M43),
1038 (vector.X * transform.M14) + (vector.Y * transform.M24) + (vector.Z * transform.M34) + (vector.W * transform.M44));
1050 Transform(ref vector, ref transform, out result);
1066 throw new ArgumentNullException(
"source");
1067 if (destination == null)
1068 throw new ArgumentNullException(
"destination");
1070 throw new ArgumentOutOfRangeException(
"destination",
"The destination array must be of same length or larger length than the source array.");
1072 for (
int i = 0; i < source.Length; ++i)
1074 Transform(ref source[i], ref transform, out destination[i]);
1086 return new Vector4(left.
X + right.
X, left.
Y + right.
Y, left.
Z + right.
Z, left.
W + right.
W);
1107 return new Vector4(left.
X - right.
X, left.
Y - right.
Y, left.
Z - right.
Z, left.
W - right.
W);
1117 return new Vector4(-value.
X, -value.
Y, -value.
Z, -value.
W);
1128 return new Vector4(value.
X * scale, value.
Y * scale, value.
Z * scale, value.
W * scale);
1139 return new Vector4(value.
X * scale, value.
Y * scale, value.
Z * scale, value.
W * scale);
1150 return new Vector4(value.
X / scale, value.
Y / scale, value.
Z / scale, value.
W / scale);
1161 return left.Equals(right);
1172 return !left.Equals(right);
1192 return new Vector3(value.
X, value.
Y, value.
Z);
1203 return string.Format(CultureInfo.CurrentCulture,
"X:{0} Y:{1} Z:{2} W:{3}", X, Y, Z, W);
1218 return string.Format(CultureInfo.CurrentCulture,
"X:{0} Y:{1} Z:{2} W:{3}", X.ToString(
format, CultureInfo.CurrentCulture),
1219 Y.ToString(format, CultureInfo.CurrentCulture), Z.ToString(
format, CultureInfo.CurrentCulture), W.ToString(format, CultureInfo.CurrentCulture));
1231 return string.Format(formatProvider,
"X:{0} Y:{1} Z:{2} W:{3}", X, Y, Z, W);
1245 ToString(formatProvider);
1247 return string.Format(formatProvider,
"X:{0} Y:{1} Z:{2} W:{3}", X.ToString(
format, formatProvider),
1248 Y.ToString(format, formatProvider), Z.ToString(
format, formatProvider), W.ToString(format, formatProvider));
1259 return X.GetHashCode() + Y.GetHashCode() + Z.GetHashCode() + W.GetHashCode();
1271 return ((
float)Math.Abs(other.
X - X) < MathUtil.ZeroTolerance &&
1272 (float)Math.Abs(other.
Y - Y) < MathUtil.ZeroTolerance &&
1273 (float)Math.Abs(other.
Z - Z) < MathUtil.ZeroTolerance &&
1274 (float)Math.Abs(other.
W - W) < MathUtil.ZeroTolerance);
1289 if (value.GetType() != GetType())
1292 return Equals((
Vector4)value);
1301 public static implicit
operator System.Windows.Media.Media3D.Point4D(
Vector4 value)
1303 return new System.Windows.Media.Media3D.Point4D(value.X, value.Y, value.Z, value.W);
1311 public static explicit operator Vector4(System.Windows.Media.Media3D.Point4D value)
1313 return new Vector4((
float)value.X, (
float)value.Y, (
float)value.Z, (
float)value.W);
1323 public static implicit
operator Microsoft.Xna.Framework.Vector4(Vector4 value)
1325 return new Microsoft.Xna.Framework.Vector4(value.X, value.Y, value.Z, value.W);
1333 public static implicit
operator Vector4(Microsoft.Xna.Framework.Vector4 value)
1335 return new Vector4(value.X, value.Y, value.Z, value.W);
Vector4(Vector2 value, float z, float w)
Initializes a new instance of the SiliconStudio.Core.Mathematics.Vector4 struct.
static void Demodulate(ref Vector4 left, ref Vector4 right, out Vector4 result)
Demodulates a vector with another by performing component-wise division.
static void SmoothStep(ref Vector4 start, ref Vector4 end, float amount, out Vector4 result)
Performs a cubic interpolation between two vectors.
static Vector4 Modulate(Vector4 left, Vector4 right)
Modulates a vector with another by performing component-wise multiplication.
void Normalize()
Converts the vector into a unit vector.
SiliconStudio.Paradox.Games.Mathematics.Vector2 Vector2
static float Dot(Vector4 left, Vector4 right)
Calculates the dot product of two vectors.
FbxDouble3 operator*(double factor, FbxDouble3 vector)
float W
The W component of the vector.
static Vector4 SmoothStep(Vector4 start, Vector4 end, float amount)
Performs a cubic interpolation between two vectors.
static void Modulate(ref Vector4 left, ref Vector4 right, out Vector4 result)
Modulates a vector with another by performing component-wise multiplication.
Represents a two dimensional mathematical vector.
static Vector4 Min(Vector4 left, Vector4 right)
Returns a vector containing the smallest components of the specified vectors.
float LengthSquared()
Calculates the squared length of the vector.
static Vector4 Demodulate(Vector4 left, Vector4 right)
Demodulates a vector with another by performing component-wise division.
static void Transform(ref Vector4 vector, ref Matrix transform, out Vector4 result)
Transforms a 4D vector by the given SiliconStudio.Core.Mathematics.Matrix.
float X
The X component of the vector.
static void Lerp(ref Vector4 start, ref Vector4 end, float amount, out Vector4 result)
Performs a linear interpolation between two vectors.
static void Normalize(ref Vector4 value, out Vector4 result)
Converts the vector into a unit vector.
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t y
static void CatmullRom(ref Vector4 value1, ref Vector4 value2, ref Vector4 value3, ref Vector4 value4, float amount, out Vector4 result)
Performs a Catmull-Rom interpolation using the specified positions.
static Vector4 Hermite(Vector4 value1, Vector4 tangent1, Vector4 value2, Vector4 tangent2, float amount)
Performs a Hermite spline interpolation.
override int GetHashCode()
Returns a hash code for this instance.
string ToString(IFormatProvider formatProvider)
Returns a System.String that represents this instance.
static Vector4 Multiply(Vector4 value, float scale)
Scales a vector by the given value.
static void Dot(ref Vector4 left, ref Vector4 right, out float result)
Calculates the dot product of two vectors.
const float ZeroTolerance
The value for which all absolute numbers smaller than are considered equal to zero.
Represents a three dimensional mathematical vector.
Vector4(float value)
Initializes a new instance of the SiliconStudio.Core.Mathematics.Vector4 struct.
static void Orthonormalize(Vector4[] destination, params Vector4[] source)
Orthonormalizes a list of vectors.
static float Distance(Vector4 value1, Vector4 value2)
Calculates the distance between two vectors.
static Vector4 Add(Vector4 left, Vector4 right)
Adds two vectors.
static Vector4 Clamp(Vector4 value, Vector4 min, Vector4 max)
Restricts a value to be within a specified range.
Vector4(Vector3 value, float w)
Initializes a new instance of the SiliconStudio.Core.Mathematics.Vector4 struct.
override string ToString()
Returns a System.String that represents this instance.
static void Transform(ref Vector4 vector, ref Quaternion rotation, out Vector4 result)
Transforms a 4D vector by the given SiliconStudio.Core.Mathematics.Quaternion rotation.
static Vector4 Normalize(Vector4 value)
Converts the vector into a unit vector.
string ToString(string format)
Returns a System.String that represents this instance.
static void Add(ref Vector4 left, ref Vector4 right, out Vector4 result)
Adds two vectors.
static void Divide(ref Vector4 value, float scale, out Vector4 result)
Scales a vector by the given value.
static void Clamp(ref Vector4 value, ref Vector4 min, ref Vector4 max, out Vector4 result)
Restricts a value to be within a specified range.
static void Hermite(ref Vector4 value1, ref Vector4 tangent1, ref Vector4 value2, ref Vector4 tangent2, float amount, out Vector4 result)
Performs a Hermite spline interpolation.
static void Transform(Vector4[] source, ref Quaternion rotation, Vector4[] destination)
Transforms an array of vectors by the given SiliconStudio.Core.Mathematics.Quaternion rotation...
static void Subtract(ref Vector4 left, ref Vector4 right, out Vector4 result)
Subtracts two vectors.
static Vector4 Subtract(Vector4 left, Vector4 right)
Subtracts two vectors.
static void Barycentric(ref Vector4 value1, ref Vector4 value2, ref Vector4 value3, float amount1, float amount2, out Vector4 result)
Returns a SiliconStudio.Core.Mathematics.Vector4 containing the 4D Cartesian coordinates of a point s...
Represents a four dimensional mathematical vector.
static void DistanceSquared(ref Vector4 value1, ref Vector4 value2, out float result)
Calculates the squared distance between two vectors.
Represents a four dimensional mathematical quaternion.
float[] ToArray()
Creates an array containing the elements of the vector.
static float DistanceSquared(Vector4 value1, Vector4 value2)
Calculates the squared distance between two vectors.
static Vector4 CatmullRom(Vector4 value1, Vector4 value2, Vector4 value3, Vector4 value4, float amount)
Performs a Catmull-Rom interpolation using the specified positions.
float Length()
Calculates the length of the vector.
static void Max(ref Vector4 left, ref Vector4 right, out Vector4 result)
Returns a vector containing the smallest components of the specified vectors.
float Y
The Y component of the vector.
void Pow(float exponent)
Raises the exponent for each components.
Vector4(float[] values)
Initializes a new instance of the SiliconStudio.Core.Mathematics.Vector4 struct.
static Vector4 Transform(Vector4 vector, Quaternion rotation)
Transforms a 4D vector by the given SiliconStudio.Core.Mathematics.Quaternion rotation.
static void Min(ref Vector4 left, ref Vector4 right, out Vector4 result)
Returns a vector containing the smallest components of the specified vectors.
static Vector4 Negate(Vector4 value)
Reverses the direction of a given vector.
bool Equals(Vector4 other)
Determines whether the specified SiliconStudio.Core.Mathematics.Vector4 is equal to this instance...
SiliconStudio.Core.Mathematics.Vector3 Vector3
static void Negate(ref Vector4 value, out Vector4 result)
Reverses the direction of a given vector.
static void Multiply(ref Vector4 value, float scale, out Vector4 result)
Scales a vector by the given value.
_In_ size_t _In_ size_t _In_ DXGI_FORMAT format
static Vector4 Transform(Vector4 vector, Matrix transform)
Transforms a 4D vector by the given SiliconStudio.Core.Mathematics.Matrix.
float Z
The Z component of the vector.
Vector4(float x, float y, float z, float w)
Initializes a new instance of the SiliconStudio.Core.Mathematics.Vector4 struct.
static void Distance(ref Vector4 value1, ref Vector4 value2, out float result)
Calculates the distance between two vectors.
static Vector4 Lerp(Vector4 start, Vector4 end, float amount)
Performs a linear interpolation between two vectors.
static Vector4 Max(Vector4 left, Vector4 right)
Returns a vector containing the largest components of the specified vectors.
static void Transform(Vector4[] source, ref Matrix transform, Vector4[] destination)
Transforms an array of 4D vectors by the given SiliconStudio.Core.Mathematics.Matrix.
DataStyle
Specifies the style used for textual serialization when an array/list or a dictionary/map must be ser...
override bool Equals(object value)
Determines whether the specified System.Object is equal to this instance.
static Vector4 Barycentric(Vector4 value1, Vector4 value2, Vector4 value3, float amount1, float amount2)
Returns a SiliconStudio.Core.Mathematics.Vector4 containing the 4D Cartesian coordinates of a point s...
string ToString(string format, IFormatProvider formatProvider)
Returns a System.String that represents this instance.
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t size_t z
static Vector4 Divide(Vector4 value, float scale)
Scales a vector by the given value.
static void Orthogonalize(Vector4[] destination, params Vector4[] source)
Orthogonalizes a list of vectors.
Represents a 4x4 mathematical matrix.