logTicks function
Generates tick values for a log scale.
Implementation
List<double> logTicks(double start, double stop, int count,
[double base = 10]) {
final logs = math.log(base);
var u = start;
var v = stop;
final r = v < u;
if (r) {
final temp = u;
u = v;
v = temp;
}
var i = (math.log(u) / logs).floor();
final j = (math.log(v) / logs).ceil();
final ticks = <double>[];
if (base % 1 == 0) {
final k = base.toInt();
if (j - i < count) {
for (; i <= j; ++i) {
for (int p = 1; p < k; ++p) {
double t;
if (i < 0) {
t = p / math.pow(base, -i);
} else {
t = p * math.pow(base, i).toDouble();
}
if (t < u) continue;
if (t > v) break;
ticks.add(t);
}
}
} else {
for (; i <= j; ++i) {
ticks.add(math.pow(base, i).toDouble());
}
}
} else {
for (; i <= j; ++i) {
ticks.add(math.pow(base, i).toDouble());
}
}
return r ? ticks.reversed.toList() : ticks;
}