如果我知道两个输入变量"a/b"的比率的范围是[1;2]

有没有一个公式可以将这两个范围绑定起来,这样我就可以始终找到y的值,无论"a/b"的值是什么(知道它总是在1和2之间)?

实际上:

我有一个可以zoom 的网格.

比如说,根据zoom 级别,我希望我的不透明度值在0.12到0.38之间(这只是一个示例):

公式将确保如果比例比为1,则不透明度为0.12,如果比例比为2,则不透明度为0.38.并且两者之间的所有不透明度值将保持"成比例"(比例增加50%=不透明度增加50%,等等).

所以我想知道寻找一个公式来实现这一点是否合理,或者它是否比看起来更难计算.

像这样的

let opacity[from desired min to max] = (endScale/startScale)[from 1 to 2] * something + opacityMin;

但这是线性的,可能不适合我的需要...

为了弄清楚这一点,我试图在纸上标出一些要点.

Input      Output   percentage   multiplier
--------------------------------------------

1          0.12     0%           (* 0.12)
1.25       0.185    25%          (* 0.148)
1.5        0.25     50%          (* 0.166..)
1.75       0.315    75%          (* 0.18)
2          0.38     100%         (* 0.19)

如果我使用1到2之间的一些输入值来预测我需要的输出,那么系数当然不匹配.所以我不知道如何绑定这两个范围.

任何hep都将不胜感激.至少要得到一些指导.

推荐答案

我不确定是否有一个好的算法可以实现这一点,但根据您对问题的描述,我建议您这样做:

const zoomMin = 1;
const zoomMax = 2;
const opacityMin = 0.12;
const opacityMax = 0.38;

function getOpacityLevel(zoomLevel) {
  const zoomRange = (zoomMax - zoomMin);
  const opacityRange = (opacityMax - opacityMin);
  
  const zoomLevelPercent = (zoomLevel - zoomMin) / zoomRange;
  const opacityLevel = (opacityRange * zoomLevelPercent) + opacityMin;
  
  return opacityLevel;
}


console.log(getOpacityLevel(1.0));
console.log(getOpacityLevel(1.25));
console.log(getOpacityLevel(1.5));
console.log(getOpacityLevel(1.75));
console.log(getOpacityLevel(2.0));

Javascript相关问答推荐

Flisk和JS错误:未捕获的Syntax错误:意外的令牌'<'

具有相同参数的JS类

我试图实现用户验证的reduxstore 和操作中出了什么问题?

没有输出到带有chrome.Devtools扩展的控制台

模块与独立组件

我可以使用CSS有效地实现最大宽度=100%和最大高度=100%,而无需父母有明确的/固定的宽度和高度,替代方法吗?

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

函数返回与输入对象具有相同键的对象

你怎么看啦啦队的回应?

还原器未正确更新状态

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

搜索功能不是在分页的每一页上进行搜索

如何在HTMX提示符中设置默认值?

如何访问此数组中的值?

无法检索与Puppeteer的蒸汽游戏的Bundle 包价格

有没有办法通过使用不同数组中的值进行排序

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

在Puppeteer中使用promise进行日志(log)记录时出现TargetCloseError

为什么当雪碧的S在另一个函数中时,Phaser不能加载它?

观察子组件中的@Output事件emits 器?