在视图中画标尺,怎么处理这样的刻度调整?
我要在视图中显示波形,为了能查看波形的细节.就要调整刻度来查看波形的局部.
我的刻度步长要求如下:值的范围为-2000 +2000 最小刻度为0.001 划分的刻度数范围为[3,8]
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
而且刻度为步长的整数倍:比如说范围为[-13 +17]要这样标刻度-10 -5 0 5 10 15 而不是-13 -8 -3 2 7 17这样标.
用什么算法实现呢?
a=500;b=200;c=100;Range;dx;
while(1)
{
if ( 2<Range/a<9)
{dx=a;break;
else if (2<Range/b<9)
{dx=b; break;}
else if (2<Range/c<9)
{dx=c;brak;}
a /=10; b /=10; c/=10;
}
找最小刻度的怎么找阿?比如说[-13 17]算出步长为5.
怎么找到最小的刻度-10呢(刻度为步长的整数倍,不随便标刻度)?
也就是找比-13大的最小的15的倍数.
哪位高手给各算法?