Added RightHandedTransform
authorMatthias <matthiasharvey@gmail.com>
Sat, 20 Feb 2016 13:00:21 +0000 (15:00 +0200)
committerMatthias <matthiasharvey@gmail.com>
Sat, 20 Feb 2016 13:00:21 +0000 (15:00 +0200)
Source/OpenTK/Math/Vector3.cs
Source/OpenTK/Math/Vector4.cs

index 2b38581..aef6b79 100644 (file)
@@ -1191,6 +1191,30 @@ namespace OpenTK
             Vector3.Add(ref vec, ref temp, out result);
         }
 
+               /// <summary>Transform a Vector by the given Matrix using right-handed notation</summary>
+               /// <param name="vec">The vector to transform</param>
+               /// <param name="mat">The desired transformation</param>
+               /// <param name="result">The transformed vector</param>
+               public static void RightHandedTransform(ref Vector3 vec, ref Matrix3 mat, out Vector3 result)
+               {
+                       result = new Vector3(
+                               mat.Row0.X * vec.X + mat.Row0.Y * vec.Y + mat.Row0.Z * vec.Z,
+                               mat.Row1.X * vec.X + mat.Row1.Y * vec.Y + mat.Row1.Z * vec.Z,
+                               mat.Row2.X * vec.X + mat.Row2.Y * vec.Y + mat.Row2.Z * vec.Z);
+               }
+
+               /// <summary>Transform a Vector by the given Matrix using right-handed notation</summary>
+               /// <param name="vec">The vector to transform</param>
+               /// <param name="mat">The desired transformation</param>
+               /// <param name="result">The transformed vector</param>
+               public static void RightHandedTransform(ref Vector3 vec, ref Matrix4 mat, out Vector3 result)
+               {
+                       result = new OpenTK.Vector3(
+                               mat.Row0.X * vec.X + mat.Row0.Y * vec.Y + mat.Row0.Z * vec.Z + mat.Row0.W,
+                               mat.Row1.X * vec.X + mat.Row1.Y * vec.Y + mat.Row1.Z * vec.Z + mat.Row1.W,
+                               mat.Row2.X * vec.X + mat.Row2.Y * vec.Y + mat.Row2.Z * vec.Z + mat.Row2.W);
+               }
+
         /// <summary>Transform a Vector3 by the given Matrix, and project the resulting Vector4 back to a Vector3</summary>
         /// <param name="vec">The vector to transform</param>
         /// <param name="mat">The desired transformation</param>
index 4e8d677..980da2c 100644 (file)
@@ -1017,6 +1017,19 @@ namespace OpenTK
             result = new Vector4(v.X, v.Y, v.Z, v.W);
         }
 
+               /// <summary>Transform a Vector by the given Matrix using right-handed notation</summary>
+               /// <param name="vec">The vector to transform</param>
+               /// <param name="mat">The desired transformation</param>
+               /// <param name="result">The transformed vector</param>
+               public static void RightHandedTransform(ref Vector4 vec, ref Matrix4 mat, out Vector4 result)
+               {
+                       result = new OpenTK.Vector4(
+                               mat.Row0.X * vec.X + mat.Row0.Y * vec.Y + mat.Row0.Z * vec.Z + mat.Row0.W * vec.W,
+                               mat.Row1.X * vec.X + mat.Row1.Y * vec.Y + mat.Row1.Z * vec.Z + mat.Row1.W * vec.W,
+                               mat.Row2.X * vec.X + mat.Row2.Y * vec.Y + mat.Row2.Z * vec.Z + mat.Row2.W * vec.W,
+                               mat.Row3.X * vec.X + mat.Row3.Y * vec.Y + mat.Row3.Z * vec.Z + mat.Row3.W * vec.W);
+               }
+
         #endregion
 
         #endregion