forked from facchinm/Arduino
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTicks.java
More file actions
46 lines (37 loc) · 1.15 KB
/
Copy pathTicks.java
File metadata and controls
46 lines (37 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package processing.app.helpers;
public class Ticks {
private double tickMin;
private double tickMax;
private double tickStep;
private int tickCount;
private double[] ticks;
public Ticks(double min, double max, int tickCount) {
double range = max - min;
double exp = Math.floor(Math.log10(range / (tickCount - 1)));
double scale = Math.pow(10, exp);
double rawTickStep = (range / (tickCount - 1)) / scale;
for(double potentialStep : new double[] {1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0}) {
if(potentialStep < rawTickStep) {
continue;
}
tickStep = potentialStep * scale;
tickMin = tickStep * Math.floor(min / tickStep);
tickMax = tickMin + tickStep * (tickCount - 1);
if(tickMax >= max) {
break;
}
}
tickCount -= (int)Math.floor((tickMax - max) / tickStep);
this.tickCount = tickCount;
ticks = new double[tickCount];
for(int i = 0; i < tickCount; ++i) {
ticks[i] = tickMin + i * tickStep;
}
}
public double getTick(int i) {
return ticks[i];
}
public int getTickCount() {
return tickCount;
}
}