public virtual Point2D InverseTransform(Point2D src, Point2D dst) { double det = GetDeterminant(); if (Math.Abs(det) < ZERO) { // awt.204=Determinant is zero throw new InvalidOperationException("awt.204"); } if (dst == null) { if (src is Point2D.Double) { dst = new Point2D.Double(); } else { dst = new Point2D.Float(); } } double x = src.GetX() - _m02; double y = src.GetY() - _m12; dst.SetLocation((x * _m11 - y * _m01) / det, (y * _m00 - x * _m10) / det); return(dst); }
public virtual Point2D DeltaTransform(Point2D src, Point2D dst) { if (dst == null) { if (src is Point2D.Double) { dst = new Point2D.Double(); } else { dst = new Point2D.Float(); } } double x = src.GetX(); double y = src.GetY(); dst.SetLocation(x * _m00 + y * _m01, x * _m10 + y * _m11); return(dst); }
public virtual void Transform(Point2D[] src, int srcOff, Point2D[] dst, int dstOff, int length) { while (--length >= 0) { Point2D srcPoint = src[srcOff++]; double x = srcPoint.GetX(); double y = srcPoint.GetY(); Point2D dstPoint = dst[dstOff]; if (dstPoint == null) { if (srcPoint is Point2D.Double) { dstPoint = new Point2D.Double(); } else { dstPoint = new Point2D.Float(); } } dstPoint.SetLocation(x * _m00 + y * _m01 + _m02, x * _m10 + y * _m11 + _m12); dst[dstOff++] = dstPoint; } }