/// <summary>
        /// Gets an array of ticks for specified axis range.
        /// </summary>
        public double[] GetTicks()
        {
            double start  = Range.Min;
            double finish = Range.Max;
            double d      = finish - start;

            if (d == 0)
            {
                return new double[] { start, finish }
            }
            ;

            double        temp  = delta * Math.Pow(10, beta);
            double        min   = Math.Floor(start / temp);
            double        max   = Math.Floor(finish / temp);
            int           count = (int)(max - min + 1);
            List <double> res   = new List <double>();
            double        x0    = min * temp;

            for (int i = 0; i < count + 1; i++)
            {
                double v = RoundHelper.Round(x0 + i * temp, beta);
                if (v >= start && v <= finish)
                {
                    res.Add(v);
                }
            }
            return(res.ToArray());
        }
        /// <summary>
        /// Generates minor ticks in specified range.
        /// </summary>
        /// <param name="range">The range.</param>
        /// <returns>An array of minor ticks.</returns>
        public double[] GetMinorTicks(Range range)
        {
            var    ticks = new List <double>(GetTicks());
            double temp  = delta * Math.Pow(10, beta);

            ticks.Insert(0, RoundHelper.Round(ticks[0] - temp, beta));
            ticks.Add(RoundHelper.Round(ticks[ticks.Count - 1] + temp, beta));
            return(minorProvider.CreateTicks(range, ticks.ToArray()));
        }