我有一个大脑放屁,需要基本配方的帮助。
if (d >= 0.1) {
scale = 0.1
} else if (d <= 0.004) {
scale = 1;
}
如果d
的值介于0.1和0.004之间,如何将scale的值设置为介于0.1和1之间?
答案 0 :(得分:3)
您可以添加else
语句来处理0.004
和0.1
之间的数字:
// ...
else {
scale = 1 - (d - 0.004) * (1 - 0.1) / (0.1 - 0.004);
}
或者你可以一次完成整个事情:
var scale = 1 - (Math.max(Math.min(d, 1), 0.004) - 0.004) * (1 - 0.1) / (0.1 - 0.004);
答案 1 :(得分:2)
缩放应如下所示:
scale = 1 - (1 - 0.1)*(d - 0.004)/(0.1 - 0.004)
或更简单
scale = 1 - 9.375*(d - 0.004)
例如,如果d = 0.05
,则为scale = 0.56875
。
答案 2 :(得分:1)
如果我从评论中正确理解,这是您计算的模式。 dRange
是d值的范围。输入值受限制也会限制输出。
注意:首先限制输入值d
,以便我们可以镜像2个绝对“比例”:dRange
和{{1 }及其相应的最小值和最大值。
注意:倒置scaleRange
,其中scaleRange
(最大值)在左边,1
(最小值)是右边:
0.1
这是一些更复杂的逻辑,值得采用稍微更具声明性的方法。我想出了以下内容来实现上面的场景。进一步的解释在代码注释中:
0.004 <-- dRange --> 0.1
~~~~~~~~~~~~|--------------------------------------------------------------|~~~~~~~~~~~~
In: ~~~d~~~~~d----------------------d---------------------------------------d-----d------
| | | | |
----->| | |<----
| | |
Limited: [d,d]--------------------d-------------------------------------[d,d]
| | |
Out: [x,x]--------------------x-------------------------------------[x,x]
~~~~~~~~~~~~|--------------------------------------------------------------|~~~~~~~~~~~~
1 <-- scaleRange --> 0.1