public sealed override ITicksInfo <DateTime> GetTicks(Range <DateTime> range, int ticksCount) { DateTime start = range.Min; DateTime end = range.Max; TimeSpan length = end - start; bool isPositive = length.Ticks > 0; DifferenceIn diff = difference; DateTime newStart = isPositive ? RoundDown(start, diff) : SafelyRoundUp(start); DateTime newEnd = isPositive ? SafelyRoundUp(end) : RoundDown(end, diff); RoundingInfo bounds = RoundHelper.CreateRoundedRange(GetSpecificValue(newStart, newStart), GetSpecificValue(newStart, newEnd)); int delta = (int)(bounds.Max - bounds.Min); if (delta == 0) { return new TicksInfo <DateTime> { Ticks = new DateTime[] { newStart } } } ; int step = delta / ticksCount; if (step == 0) { step = 1; } DateTime tick = GetStart(newStart, (int)bounds.Min, step); bool isMinDateTime = IsMinDate(tick) && step != 1; if (isMinDateTime) { step--; } List <DateTime> ticks = new List <DateTime>(); DateTime finishTick = AddStep(range.Max, step); while (tick < finishTick) { ticks.Add(tick); tick = AddStep(tick, step); if (isMinDateTime) { isMinDateTime = false; step++; } } TicksInfo <DateTime> res = new TicksInfo <DateTime> { Ticks = ticks.ToArray(), Info = diff }; return(res); }
/// <summary> /// Initializes a new instance of the Test2 class. /// </summary> public Test2() { InitializeComponent(); var range = RoundHelper.CreateRoundedRange(2.1, 3.5); double a = 10.2; double b = 1; var ia = (int)a; var ib = (int)b; ia = ia - (ia + ib) % ib; var c = a + b / 2; var d = c % b; a = a - d; }
private void AutoAdjustCoordinate() { if (this.Points.Length != 0) { this.CalcXYZRange(); _roundZRange = RoundHelper.CreateRoundedRange(this.ZRange.Min, this.ZRange.Max); _axisGrid.XRange = RoundHelper.CreateRoundedRange(this.XRange.Min, this.XRange.Max); _axisGrid.YRange = RoundHelper.CreateRoundedRange(this.YRange.Min, this.YRange.Max); if (_roundZRange.Min == _roundZRange.Max) { _axisGrid.ZRange = new Range <double>(_roundZRange.Max / 2.0, _roundZRange.Max); } else { _axisGrid.ZRange = _roundZRange; } } }
private Range <double> CreateRangeOfZAxis() { double minZ = Data[0, 0].Z, maxZ = Data[0, 0].Z; for (int i = 0; i <= Data.GetUpperBound(0); i++) { for (int j = 0; j <= Data.GetUpperBound(1); j++) { if (Data[i, j].Z < minZ) { minZ = Data[i, j].Z; } else if (Data[i, j].Z > maxZ) { maxZ = Data[i, j].Z; } } } return(RoundHelper.CreateRoundedRange(minZ, maxZ)); }