/// <summary>Creates a skew matrix from the given angles in radians.</summary> /// <param name="radiansX">The X angle, in radians.</param> /// <param name="radiansY">The Y angle, in radians.</param> /// <returns>A skew matrix.</returns> public static Matrix3X2 <T> CreateSkew <T>(T radiansX, T radiansY) where T : unmanaged, IFormattable, IEquatable <T>, IComparable <T> { Matrix3X2 <T> result = Matrix3X2 <T> .Identity; T xTan = Scalar.Tan(radiansX); T yTan = Scalar.Tan(radiansY); result.M12 = yTan; result.M21 = xTan; return(result); }
/// <summary>Creates a skew matrix from the given angles in radians and a center point.</summary> /// <param name="radiansX">The X angle, in radians.</param> /// <param name="radiansY">The Y angle, in radians.</param> /// <param name="centerPoint">The center point.</param> /// <returns>A skew matrix.</returns> public static Matrix3X2 <T> CreateSkew <T>(T radiansX, T radiansY, Vector2D <T> centerPoint) where T : unmanaged, IFormattable, IEquatable <T>, IComparable <T> { Matrix3X2 <T> result = Matrix3X2 <T> .Identity; T xTan = Scalar.Tan(radiansX); T yTan = Scalar.Tan(radiansY); T tx = Scalar.Negate(Scalar.Multiply(centerPoint.Y, xTan)); T ty = Scalar.Negate(Scalar.Multiply(centerPoint.X, yTan)); result.M12 = yTan; result.M21 = xTan; result.M31 = tx; result.M32 = ty; return(result); }