在HTML / JS中创建符号滑块Slider

问题描述

我有一个工作日志滑块。使用以下代码https://codepen.io/willat600series/pen/ojzYJx

function LogSlider(options) {
   options = options || {};
   this.minpos = options.minpos || 0;
   this.maxpos = options.maxpos || 100;
   this.minlval = Math.log(options.minval || 1);
   this.maxlval = Math.log(options.maxval || 100000);

   this.scale = (this.maxlval - this.minlval) / (this.maxpos - this.minpos);
}

LogSlider.prototype = {
   // Calculate value from a slider position
   value: function(position) {
      return Math.exp((position - this.minpos) * this.scale + this.minlval);
   },// Calculate slider position from a value
   position: function(value) {
      return this.minpos + (Math.log(value) - this.minlval) / this.scale;
   }
};

我的滑块(带有刻度)如下所示:

log-scale-slider

滑块值0-1000映射到10 ^ -6-10 ^ 6对数值范围。

我想将此代码改编成类似于symlog->在给定一系列滑块位置值(例如0-1000)的情况下,该函数返回对称于(10 ^ 0)而不是0左右的symlog值。换句话说, ,中点左侧的滑块刻度线(10 ^ 0 = 1;在上图中表示为“等于”)应为右侧1的镜像。预期比例应如下所示:

sym-log-scale-visually

为进一步说明,这是一个传统符号图的可视化图,该图围绕0对称:

symlog-traditional-plot

这是提出此比例的论文:https://pdfs.semanticscholar.org/70d5/3d9f448e6f2c10bd87a4a058be64f5af7dbc.pdf

我需要的修改是关于1(10 ^ 0)对称。

我不太擅长数学,尤其是对数数学。很难弄清楚这一点。有人可以提供一些有关如何做到最好的见解吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)