在试图中显示标尺,并能实现标尺刻度的调整在放大视图中的曲线时。
我想实现一个视图标尺用于工控显示采集到的数据。
具体是这样的,y值的范围是:-2000 ~ +2000 最小刻度为0.001
随着视图缩放调整刻度而调整,刻度步长为以下几种值:
500 50 5 0.5 0.05 0.005
200 20 2 0.2 0.02 0.002
100 10 1 0.1 0.01 0.001
求法如下:那位有更好的求法?
delta=0; a=500;b=200;c=100
RangeY = value;
while(1)
{
if ( 2 < RangeY/a < 9)
{
delta=a;break;
}
else if ( 2 < RangeY/b < 9)
{
delta=b;break;
}
else if (2 < RangeY/c < 9)
{
delta=c;break;
}
a /=10; b/=10; c/=10;
}
比如说-13 ~ 17 找到步长为5
这时的刻度为:(刻度为步长的整数倍)
-10 -5 0 5 10 15
而不是
-13 -8 -3 2 7 12 17
怎么到第一个显示的刻度-10呢?
大家能提供一个算法吗?