复制代码
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72/** * 刻度计算的帮助类 * 已知条件:最大值,最小值,初始设定的刻度数 * 第一步,计算步长 * 第二步,重新计算刻度数 * 第三步,重新计算最大值和最小值 */ public class ScaleCaculateHelper { /** * 最小值 */ private double mMin; /** * 最大值 */ private double mMax; /** * 刻度数 */ private int mNumTicks; /** * 步长 */ private double mStep; /** * 最小的刻度数 */ private static final int MIN_NUM_TICKS = 4; public ScaleCaculateHelper(double mMin, double mMax, int mNumTicks) { this.mMin = mMin; this.mMax = mMax; this.mNumTicks = mNumTicks; } /** * 调整坐标 */ public void adjustAxis(){ //计算步长 if(mNumTicks < MIN_NUM_TICKS){ mNumTicks = MIN_NUM_TICKS; } double grossStep = (mMax - mMin) / mNumTicks; //1--10之间取1, 10---100之间取10, 100--1000之间取100 double step = Math.pow(10, Math.floor(Math.log10(grossStep)));//floor()四舍五入取小值 if(grossStep < 2 * step){ step = step * 1; }else if(grossStep >= 2 * step && grossStep < 5 * step ){ step = step * 2; } else{ step = step * 5; } mStep = step; //重新计算刻度数 mNumTicks = (int) (Math.ceil(mMax / step) - Math.floor(mMin / step));//ceil()四舍五入取大值 //重新计算最小值和最大值 mMin = Math.floor(mMin / step) * step; mMax = Math.ceil(mMax / step) * step; } public double getmMin() { return mMin; } public double getmMax() { return mMax; } public int getmNumTicks() { return mNumTicks; } public double getmStep() { return mStep; } }
最后
以上就是机灵鼠标最近收集整理的关于一种简单的坐标自适应的算法(java版本)的全部内容,更多相关一种简单内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复