public virtual Point InverseTransform(double x, double y, Axis yAxis)
        {
            Debug.Assert(yAxis != null);
            if (IsPolar)
            {
                x -= MidPoint.X;
                y -= MidPoint.Y;
                double th = Math.Atan2(y, x);
                double r  = Math.Sqrt(x * x + y * y);
                x = r / Scale + Offset;
                y = yAxis != null ? th / yAxis.Scale + yAxis.Offset : double.NaN;
                return(new Point(x, y));
            }

            return(new Point(InverseTransformX(x), yAxis.InverseTransformX(y)));
        }
        public virtual Point InverseTransform(double x, double y, Axis yAxis)
        {
            Debug.Assert(yAxis != null);
            if (IsPolar)
            {
                x -= MidPoint.X;
                y -= MidPoint.Y;
                double th = Math.Atan2(y, x);
                double r = Math.Sqrt(x * x + y * y);
                x = r / Scale + Offset;
                y = yAxis != null ? th / yAxis.Scale + yAxis.Offset : double.NaN;
                return new Point(x, y);
            }

            return new Point(InverseTransformX(x), yAxis.InverseTransformX(y));
        }