我一直在尝试找到一个我不久前在 LPC 中使用(未编写)的方便方法的 Javascript 版本,它被称为 dimval(),它采用以下形式:
NAME
dimval() - returns values with a reduced increase in output
as input values grow larger.
SYNOPSIS
float dimval(float input, float max_input, float max_output,
float min_input, float min_output, float rate);
DESCRIPTION
Returns (as a float) a value between min_output and max_output,
with values increasing at a reduced rate as they move from
min_input toward max_output.
Input is the input value.
Max_input is the maximum acceptable input. Any higher input
value will be capped to this.
Max_output is the maximum value returned.
Min_input is the (optional) minimum input. Default is zero.
Min_output is the (optional) minimum output. Default is zero.
Rate determines how quickly the cost increases to achieve
greater return values. Higher numbers are faster, lower numbers
are slower.
我读了这篇文章,但它似乎并没有捕捉到我想要的东西(开始看起来要简单得多)。我还阅读了这个 SO 问题,并且......好吧,我认为这可以工作......但说实话,数学超出了我的范围。我了解上面的描述以及参数如何协同工作以产生我想要的结果。
如果有人可以在 Javascript 中提供具有上述约束的方法,我将不胜感激。
干杯!
编辑:原始方法的示例输出。
- 评估返回值 (5.0, 100.0, 100.0, 0.0, 0.0, 1.0) => 22.360680
- 评估返回值 (10.0, 100.0, 100.0, 0.0, 0.0, 1.0) => 31.622776
评估返回 dimval(50.0, 100.0, 100.0, 0.0, 0.0, 1.0) => 70.710678
评估返回值 (10.0, 100.0, 100.0, 0.0, 0.0, 2.0) => 15.811388
评估返回暗值(10.0、100.0、100.0、0.0、0.0、10.0)=> 3.162278
评估返回值 (200.0, 100.0, 100.0, 0.0, 0.0, 10.0) => 10.000000
评估返回值 (200.0, 100.0, 100.0, 0.0, 0.0, 1.0) => 100.000000
评估返回值 (1.0, 100.0, 100.0, 10.0, 0.0, 10.0) => 0.000000
如果您希望我运行更多示例,请告诉我。