Skip to content

Commit

Permalink
checkpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Jan 18, 2023
1 parent cc9ac02 commit 53c5c7a
Showing 1 changed file with 27 additions and 15 deletions.
42 changes: 27 additions & 15 deletions src/ticks.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,30 @@ var e10 = Math.sqrt(50),
e5 = Math.sqrt(10),
e2 = Math.sqrt(2);

function tickSpec(start, stop, count) {
var step = (stop - start) / Math.max(0, count),
power = Math.floor(Math.log(step) / Math.LN10),
error = step / Math.pow(10, power);
if (power >= 0) {
let step = (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power);
let r0 = Math.round(start / step), r1 = Math.round(stop / step);
if (r0 * step < start) ++r0;
if (r1 * step > stop) --r1;
return [r0, r1, step];
} else {
let step = Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
let r0 = Math.round(start * step), r1 = Math.round(stop * step);
if (r0 / step < start) ++r0;
if (r1 / step > stop) --r1;
return [r0, r1, -step];
}
}

export default function ticks(start, stop, count) {
var reverse,
i = -1,
n,
t,
ticks,
step;

stop = +stop, start = +start, count = +count;
Expand All @@ -18,31 +37,24 @@ export default function ticks(start, stop, count) {
let r0 = Math.round(start / step), r1 = Math.round(stop / step);
if (r0 * step < start) ++r0;
if (r1 * step > stop) --r1;
if (r1 < r0 && 0.5 <= count && count < 2) return ticks(start, stop, count * 2);
t = new Array(n = r1 - r0 + 1);
while (++i < n) t[i] = (r0 + i) * step;
ticks = new Array(n = r1 - r0 + 1);
while (++i < n) ticks[i] = (r0 + i) * step;
} else {
step = -step;
let r0 = Math.round(start * step), r1 = Math.round(stop * step);
if (r0 / step < start) ++r0;
if (r1 / step > stop) --r1;
if (r1 < r0 && 0.5 <= count && count < 2) return ticks(start, stop, count * 2);
t = new Array(n = r1 - r0 + 1);
while (++i < n) t[i] = (r0 + i) / step;
ticks = new Array(n = r1 - r0 + 1);
while (++i < n) ticks[i] = (r0 + i) / step;
}

if (reverse) t.reverse();
if (reverse) ticks.reverse();

return t;
return ticks;
}

export function tickIncrement(start, stop, count) {
var step = (stop - start) / Math.max(0, count),
power = Math.floor(Math.log(step) / Math.LN10),
error = step / Math.pow(10, power);
return power >= 0
? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
: -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
return tickSpec(start, stop, count)[2];
}

export function tickStep(start, stop, count) {
Expand Down

0 comments on commit 53c5c7a

Please sign in to comment.