@@ -860,12 +860,9 @@ public static Vector3D<TSelf> Tanh<TSelf>(Vector3D<TSelf> x)
860860 public static Vector3D < T > Transform < T > ( Vector2D < T > vector , Quaternion < T > quaternion )
861861 where T : INumber < T > , IRootFunctions < T > , ITrigonometricFunctions < T >
862862 {
863- var v = new Vector4D < T > ( vector . X , vector . Y , T . Zero , T . One ) ;
864-
865- // Quaternion-vector rotation (optimized form)
866863 var x2 = quaternion . X + quaternion . X ;
867864 var y2 = quaternion . Y + quaternion . Y ;
868- var z2 = quaternion . Z + quaternion . Z ;
865+ var z2 = T . Zero ;
869866
870867 var wx2 = quaternion . W * x2 ;
871868 var wy2 = quaternion . W * y2 ;
@@ -877,19 +874,16 @@ public static Vector3D<T> Transform<T>(Vector2D<T> vector, Quaternion<T> quatern
877874 var yz2 = quaternion . Y * z2 ;
878875 var zz2 = quaternion . Z * z2 ;
879876
880- return new Vector3D < T > (
881- v . X * ( T . One - yy2 + zz2 ) + v . Y * ( xy2 - wz2 ) + v . Z * ( xz2 + wy2 ) ,
882- v . Y * ( T . One - yy2 + zz2 ) + v . X * ( xy2 + wz2 ) + v . Z * ( yz2 - wx2 ) ,
883- v . Z * ( T . One - yy2 + zz2 ) + v . X * ( xz2 - wy2 ) + v . Y * ( yz2 + wx2 ) ) ;
884- }
877+ return new (
878+ ( vector . X * ( T . One - yy2 - zz2 ) ) + ( vector . Y * ( xy2 - wz2 ) ) ,
879+ ( vector . X * ( xy2 + wz2 ) ) + ( vector . Y * ( T . One - xx2 - zz2 ) ) ,
880+ ( vector . X * ( xz2 - wy2 ) ) + ( vector . Y * ( yz2 + wx2 ) ) ) ;
881+ }
885882
886883 /// <summary>Transforms the given vector by the specified Quaternion.</summary>
887884 public static Vector3D < T > Transform < T > ( Vector3D < T > vector , Quaternion < T > quaternion )
888885 where T : INumber < T > , IRootFunctions < T > , ITrigonometricFunctions < T >
889886 {
890- var v = new Vector4D < T > ( vector . X , vector . Y , vector . Z , T . One ) ;
891-
892- // Quaternion-vector rotation (optimized form)
893887 var x2 = quaternion . X + quaternion . X ;
894888 var y2 = quaternion . Y + quaternion . Y ;
895889 var z2 = quaternion . Z + quaternion . Z ;
@@ -904,22 +898,19 @@ public static Vector3D<T> Transform<T>(Vector3D<T> vector, Quaternion<T> quatern
904898 var yz2 = quaternion . Y * z2 ;
905899 var zz2 = quaternion . Z * z2 ;
906900
907- return new Vector3D < T > (
908- v . X * ( T . One - yy2 + zz2 ) + v . Y * ( xy2 - wz2 ) + v . Z * ( xz2 + wy2 ) ,
909- v . Y * ( T . One - yy2 + zz2 ) + v . X * ( xy2 + wz2 ) + v . Z * ( yz2 - wx2 ) ,
910- v . Z * ( T . One - yy2 + zz2 ) + v . X * ( xz2 - wy2 ) + v . Y * ( yz2 + wx2 ) ) ;
911- }
901+ return new (
902+ ( vector . X * ( T . One - yy2 - zz2 ) ) + ( vector . Y * ( xy2 - wz2 ) ) + ( vector . Z * ( xz2 + wy2 ) ) ,
903+ ( vector . X * ( xy2 + wz2 ) ) + ( vector . Y * ( T . One - xx2 - zz2 ) ) + ( vector . Z * ( yz2 - wx2 ) ) ,
904+ ( vector . X * ( xz2 - wy2 ) ) + ( vector . Y * ( yz2 + wx2 ) ) + ( vector . Z * ( T . One - xx2 - yy2 ) ) ) ;
905+ }
912906
913907 /// <summary>Transforms the given vector by the specified Quaternion.</summary>
914908 public static Vector3D < T > TransformNormal < T > ( Vector2D < T > vector , Quaternion < T > quaternion )
915909 where T : INumber < T > , IRootFunctions < T > , ITrigonometricFunctions < T >
916910 {
917- var v = new Vector4D < T > ( vector . X , vector . Y , T . Zero , T . Zero ) ;
918-
919- // Quaternion-vector rotation (optimized form)
920911 var x2 = quaternion . X + quaternion . X ;
921912 var y2 = quaternion . Y + quaternion . Y ;
922- var z2 = quaternion . Z + quaternion . Z ;
913+ var z2 = T . Zero ;
923914
924915 var wx2 = quaternion . W * x2 ;
925916 var wy2 = quaternion . W * y2 ;
@@ -931,19 +922,16 @@ public static Vector3D<T> TransformNormal<T>(Vector2D<T> vector, Quaternion<T> q
931922 var yz2 = quaternion . Y * z2 ;
932923 var zz2 = quaternion . Z * z2 ;
933924
934- return new Vector3D < T > (
935- v . X * ( T . One - yy2 + zz2 ) + v . Y * ( xy2 - wz2 ) + v . Z * ( xz2 + wy2 ) ,
936- v . Y * ( T . One - yy2 + zz2 ) + v . X * ( xy2 + wz2 ) + v . Z * ( yz2 - wx2 ) ,
937- v . Z * ( T . One - yy2 + zz2 ) + v . X * ( xz2 - wy2 ) + v . Y * ( yz2 + wx2 ) ) ;
938- }
925+ return new (
926+ ( vector . X * ( T . One - yy2 - zz2 ) ) + ( vector . Y * ( xy2 - wz2 ) ) ,
927+ ( vector . X * ( xy2 + wz2 ) ) + ( vector . Y * ( T . One - xx2 - zz2 ) ) ,
928+ ( vector . X * ( xz2 - wy2 ) ) + ( vector . Y * ( yz2 + wx2 ) ) ) ;
929+ }
939930
940931 /// <summary>Transforms the given vector by the specified Quaternion.</summary>
941932 public static Vector3D < T > TransformNormal < T > ( Vector3D < T > vector , Quaternion < T > quaternion )
942933 where T : INumber < T > , IRootFunctions < T > , ITrigonometricFunctions < T >
943934 {
944- var v = new Vector4D < T > ( vector . X , vector . Y , vector . Z , T . Zero ) ;
945-
946- // Quaternion-vector rotation (optimized form)
947935 var x2 = quaternion . X + quaternion . X ;
948936 var y2 = quaternion . Y + quaternion . Y ;
949937 var z2 = quaternion . Z + quaternion . Z ;
@@ -958,11 +946,11 @@ public static Vector3D<T> TransformNormal<T>(Vector3D<T> vector, Quaternion<T> q
958946 var yz2 = quaternion . Y * z2 ;
959947 var zz2 = quaternion . Z * z2 ;
960948
961- return new Vector3D < T > (
962- v . X * ( T . One - yy2 + zz2 ) + v . Y * ( xy2 - wz2 ) + v . Z * ( xz2 + wy2 ) ,
963- v . Y * ( T . One - yy2 + zz2 ) + v . X * ( xy2 + wz2 ) + v . Z * ( yz2 - wx2 ) ,
964- v . Z * ( T . One - yy2 + zz2 ) + v . X * ( xz2 - wy2 ) + v . Y * ( yz2 + wx2 ) ) ;
965- }
949+ return new (
950+ ( vector . X * ( T . One - yy2 - zz2 ) ) + ( vector . Y * ( xy2 - wz2 ) ) + ( vector . Z * ( xz2 + wy2 ) ) ,
951+ ( vector . X * ( xy2 + wz2 ) ) + ( vector . Y * ( T . One - xx2 - zz2 ) ) + ( vector . Z * ( yz2 - wx2 ) ) ,
952+ ( vector . X * ( xz2 - wy2 ) ) + ( vector . Y * ( yz2 + wx2 ) ) + ( vector . Z * ( T . One - xx2 - yy2 ) ) ) ;
953+ }
966954
967955 /// <summary>Transforms the given vector by the specified transformation Matrix.</summary>
968956 public static Vector3D < T > Transform < T > ( Vector2D < T > vector , Matrix2X3 < T > matrix )
0 commit comments