nice static method
Implementation
static NiceScale nice(num min,
num max,
int splitNumber, {
num minInterval = 0,
num? maxInterval,
num? interval,
bool forceSplitNumber = false,
bool start0 = false,
NiceType type = NiceType.n1,
}) {
if (interval != null) {
int count = (max - min) ~/ interval;
if ((max - min) % interval != 0) {
count += 1;
}
return NiceScale(min, max, (max - min) / count, count);
}
if (type == NiceType.n1) {
return _niceAxis(
min,
max,
splitNumber,
minInterval: minInterval,
maxInterval: maxInterval,
interval: null,
forceSplitNumber: forceSplitNumber,
start0: start0,
);
}
//第二种算法
int oldCount = splitNumber;
num rawInterval = (max - min) / splitNumber;
if (rawInterval < minInterval) {
rawInterval = minInterval;
}
if (maxInterval != null) {
if (rawInterval > maxInterval) {
rawInterval = maxInterval;
}
}
splitNumber = (max - min) ~/ rawInterval;
if ((max - min) % rawInterval != 0) {
splitNumber += 1;
}
int onlyInside = -1;
_NiceNumber number2 = _NiceNumber.nice(min, max, splitNumber, onlyInside: onlyInside);
NiceScale rangeValue = NiceScale(number2.minValue, number2.maxValue, number2.step, number2.tickCount);
if (forceSplitNumber) {
return rangeValue.copy(tickCount: oldCount);
}
return rangeValue;
}