/// <summary> /// Transforms the specified point. /// </summary> /// <param name="point">The point</param> /// <param name="centerX">The center point X</param> /// <param name="centerY">The center point Y</param> /// <param name="offsetX">The offset point X</param> /// <param name="offsetY">The offset point Y</param> /// <param name="rotationAngle">The rotation angle</param> /// <returns>The transformed point</returns> internal static Windows.Foundation.Point Transform(Windows.Foundation.Point point, double centerX, double centerY, double offsetX, double offsetY, double rotationAngle) { MatrixMock mock = new MatrixMock(); mock.RotateAt(rotationAngle, offsetX + centerX, offsetY + centerY); return(mock.Transform(point)); }
static MatrixMock CreateIdentity() { MatrixMock mock = new MatrixMock(); mock.SetMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, MatrixTypesMock.TRANSFORM_IS_IDENTITY); return(mock); }
internal static MatrixMock CreateTranslation(double offsetX, double offsetY) { MatrixMock mock = new MatrixMock(); mock.SetMatrix(1.0, 0.0, 0.0, 1.0, offsetX, offsetY, MatrixTypesMock.TRANSFORM_IS_TRANSLATION); return(mock); }
internal static MatrixMock CreateSkewRadians(double skewX, double skewY) { MatrixMock mock = new MatrixMock(); mock.SetMatrix(1.0, Math.Tan(skewY), Math.Tan(skewX), 1.0, 0.0, 0.0, MatrixTypesMock.TRANSFORM_IS_UNKNOWN); return(mock); }
internal static MatrixMock CreateScaling(double scaleX, double scaleY) { MatrixMock mock = new MatrixMock(); mock.SetMatrix(scaleX, 0.0, 0.0, scaleY, 0.0, 0.0, MatrixTypesMock.TRANSFORM_IS_SCALING); return(mock); }
internal static MatrixMock CreateScaling(double scaleX, double scaleY, double centerX, double centerY) { MatrixMock mock = new MatrixMock(); mock.SetMatrix(scaleX, 0.0, 0.0, scaleY, centerX - (scaleX * centerX), centerY - (scaleY * centerY), MatrixTypesMock.TRANSFORM_IS_SCALING | MatrixTypesMock.TRANSFORM_IS_TRANSLATION); return(mock); }
public static bool Equals(MatrixMock matrix1, MatrixMock matrix2) { if (matrix1.IsDistinguishedIdentity || matrix2.IsDistinguishedIdentity) { return(matrix1.IsIdentity == matrix2.IsIdentity); } return((((((double)matrix1.M11).Equals(matrix2.M11) && ((double)matrix1.M12).Equals(matrix2.M12)) && (((double)matrix1.M21).Equals(matrix2.M21) && ((double)matrix1.M22).Equals(matrix2.M22))) && ((double)matrix1.OffsetX).Equals(matrix2.OffsetX)) && ((double)matrix1.OffsetY).Equals(matrix2.OffsetY)); }
public override bool Equals(object o) { if ((o == null) || !(o is MatrixMock)) { return(false); } MatrixMock mock = (MatrixMock)o; return(Equals(this, mock)); }
internal static MatrixMock CreateRotationRadians(double angle, double centerX, double centerY) { MatrixMock mock = new MatrixMock(); double num = Math.Sin(angle); double num2 = Math.Cos(angle); double offsetX = (centerX * (1.0 - num2)) + (centerY * num); double offsetY = (centerY * (1.0 - num2)) - (centerX * num); mock.SetMatrix(num2, num, -num, num2, offsetX, offsetY, MatrixTypesMock.TRANSFORM_IS_UNKNOWN); return(mock); }
internal static void PrependOffset(ref MatrixMock matrix, double offsetX, double offsetY) { if (matrix._type == MatrixTypesMock.TRANSFORM_IS_IDENTITY) { matrix = new MatrixMock(1.0, 0.0, 0.0, 1.0, offsetX, offsetY); matrix._type = MatrixTypesMock.TRANSFORM_IS_TRANSLATION; } else { matrix._offsetX += (matrix._m11 * offsetX) + (matrix._m21 * offsetY); matrix._offsetY += (matrix._m12 * offsetX) + (matrix._m22 * offsetY); if (matrix._type != MatrixTypesMock.TRANSFORM_IS_UNKNOWN) { matrix._type |= MatrixTypesMock.TRANSFORM_IS_TRANSLATION; } } }
internal static void MultiplyMatrix(ref MatrixMock matrix1, ref MatrixMock matrix2) { MatrixTypesMock mock = matrix1._type; MatrixTypesMock mock2 = matrix2._type; if (mock2 != MatrixTypesMock.TRANSFORM_IS_IDENTITY) { if (mock == MatrixTypesMock.TRANSFORM_IS_IDENTITY) { matrix1 = matrix2; } else if (mock2 == MatrixTypesMock.TRANSFORM_IS_TRANSLATION) { matrix1._offsetX += matrix2._offsetX; matrix1._offsetY += matrix2._offsetY; if (mock != MatrixTypesMock.TRANSFORM_IS_UNKNOWN) { matrix1._type |= MatrixTypesMock.TRANSFORM_IS_TRANSLATION; } } else if (mock == MatrixTypesMock.TRANSFORM_IS_TRANSLATION) { double num = matrix1._offsetX; double num2 = matrix1._offsetY; matrix1 = matrix2; matrix1._offsetX = ((num * matrix2._m11) + (num2 * matrix2._m21)) + matrix2._offsetX; matrix1._offsetY = ((num * matrix2._m12) + (num2 * matrix2._m22)) + matrix2._offsetY; if (mock2 == MatrixTypesMock.TRANSFORM_IS_UNKNOWN) { matrix1._type = MatrixTypesMock.TRANSFORM_IS_UNKNOWN; } else { matrix1._type = MatrixTypesMock.TRANSFORM_IS_SCALING | MatrixTypesMock.TRANSFORM_IS_TRANSLATION; } } else { switch (((int)(((MatrixTypesMock)(((int)mock) << 4)) | mock2))) { case 0x22: matrix1._m11 *= matrix2._m11; matrix1._m22 *= matrix2._m22; return; case 0x23: matrix1._m11 *= matrix2._m11; matrix1._m22 *= matrix2._m22; matrix1._offsetX = matrix2._offsetX; matrix1._offsetY = matrix2._offsetY; matrix1._type = MatrixTypesMock.TRANSFORM_IS_SCALING | MatrixTypesMock.TRANSFORM_IS_TRANSLATION; return; case 0x24: case 0x34: case 0x42: case 0x43: case 0x44: matrix1 = new MatrixMock((matrix1._m11 * matrix2._m11) + (matrix1._m12 * matrix2._m21), (matrix1._m11 * matrix2._m12) + (matrix1._m12 * matrix2._m22), (matrix1._m21 * matrix2._m11) + (matrix1._m22 * matrix2._m21), (matrix1._m21 * matrix2._m12) + (matrix1._m22 * matrix2._m22), ((matrix1._offsetX * matrix2._m11) + (matrix1._offsetY * matrix2._m21)) + matrix2._offsetX, ((matrix1._offsetX * matrix2._m12) + (matrix1._offsetY * matrix2._m22)) + matrix2._offsetY); return; case 50: matrix1._m11 *= matrix2._m11; matrix1._m22 *= matrix2._m22; matrix1._offsetX *= matrix2._m11; matrix1._offsetY *= matrix2._m22; return; case 0x33: matrix1._m11 *= matrix2._m11; matrix1._m22 *= matrix2._m22; matrix1._offsetX = (matrix2._m11 * matrix1._offsetX) + matrix2._offsetX; matrix1._offsetY = (matrix2._m22 * matrix1._offsetY) + matrix2._offsetY; break; default: return; } } } }
public void Prepend(MatrixMock matrix) { this = matrix * this; }
public void Append(MatrixMock matrix) { this *= matrix; }
public static MatrixMock Multiply(MatrixMock trans1, MatrixMock trans2) { MatrixUtil.MultiplyMatrix(ref trans1, ref trans2); return(trans1); }
static MatrixMock() { s_identity = CreateIdentity(); }
public bool Equals(MatrixMock value) { return(Equals(this, value)); }