我是靠谱客的博主 机灵鼠标,最近开发中收集的这篇文章主要介绍一种简单的坐标自适应的算法(java版本),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/**
* 刻度计算的帮助类
* 已知条件:最大值,最小值,初始设定的刻度数
* 第一步,计算步长
* 第二步,重新计算刻度数
* 第三步,重新计算最大值和最小值
*/
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版本)的全部内容,希望文章能够帮你解决一种简单的坐标自适应的算法(java版本)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部