我不知道如何用更少的词来表达我需要的算法的作用;很有可能这里已经回答了这样的问题,但我不知道如何搜索它。
我需要的是以下内容。
我正在编写一种 2D 图形绘图程序。显然,只画主坐标线不是很好,因为图形可能离原点很远,如果只画主线,用户对它的大小没有任何参考。
我决定绘制参考线,即以恒定间隔周期性出现的水平线和垂直线,对应于例如整数。然而,使用固定间隔的效果并不好,因为有缩放的可能性,也就是说,如果用户放大查看例如单位正方形的内部,他将再次看到几乎空的盒子,而没有任何尺寸参考。
所以,我需要以某种方式重新调整用于绘制参考线的间隔。换句话说,我需要一个类型的函数,double -> double
它接受当前比例系数(我使用的那个指定一个长度单位中有多少像素)或应用于它的某个函数的值(例如,可以沿某个轴适合屏幕内部)并返回 step 值(以像素为单位,以逻辑单位表示,无所谓),即参考线之间的间隔长度。
我相信这种函数的值集是可数无限的,也就是说,这个函数会将比例系数值的区间映射到步长的固定值。我可以对算法进行粗略的描述,或者更准确地说,是我需要的映射。它看起来与此类似(输入值是屏幕内的最大单位数):
- ...
- [5..9] -> 0.25
- [9..15] -> 0.5
- [15..30] -> 1
- ...
这里的值纯粹是经验值,仅用于说明。
但是,我不知道如何将这组映射外推到更广泛的比例系数值,更不用说如何分析地表达这种依赖关系了。然而我确信这是可能的,因为我在许多绘图程序中都看到了这样的事情。
我发现这个问题看起来非常接近我的需要,但我无法将答案调整到我的任务中,因为它提到了标签宽度并且我没有任何标签。