1

我有一个数字,每一步都会增加一个增量。假设起始编号为0,增量为100

在 step#5之后,我想开始减少基本增量 ( 100)。增量应该平滑减少,并且在 step#10它等于0

这是一张图表,基本上解释了我想要做什么(y - 增量,x - 步长)。

在此处输入图像描述

代码表示:

// x - step
// y - increment

var value = 0;
for(var x = 0; x < 10; x++) {


    var y = 100;
    if(x > 5) {
       // y = ???
    } 
    value += y;

} 

所以问题是如何表示这个?有一个选项来修改这个弧的平滑度也很棒。

谢谢!

4

3 回答 3

1

如果该曲线是四分之一圆,那么您想要的等式是

y = 20 * Math.sqrt(x * (10 - x));

如果它不是四分之一圈,那么这是任何人的猜测。

于 2013-10-12T08:31:57.483 回答
1
if (x<=5)
    y = 100;
else if (x>=10)
    y = 0;
else {
    double radius = 100;
    double offset = (x-5)*20;
    y = Math.sqrt(raidus*radius - offset*offset);
}

http://fooplot.com/plot/offuyxbfzu

于 2013-10-12T08:32:14.373 回答
1

这将为您提供一个完美的四分之一圆,从 (5|100) 开始,到 (10|0) 结束。

if (x > 5) {
    y = 100 * Math.sqrt( 1 - Math.pow(((x - 5) / 5), 2) );
}

http://fooplot.com/plot/2i8hy2twl4

说明(可选)

警告!可能包含数学!

让我们从一个更简单的情况开始,一个半径为 1 且中心为 (0|0) 的四分之一圆。我们知道x² + y² = r²(勾股定理)。x 和 r 是已知的,所以我们可以这样计算 y:y = sqrt(r² - x²). 由于我们的半径始终为 1 且 1² 等于 1,我们可以将其分解为:

y = sqrt(1 - x²)

y 的值范围从 0 到 1。我们希望它的范围从 0 到 100。为此,我们只需将右侧乘以 100。

y = 100 * sqrt(1 - x²)
    ^^^^^^

要将整个事物 5 向右移动,我们需要从 x 中减去 5。

y = 100 * sqrt(1 - (x - 5)²)
                    ^^^^^

另外,我们想将它向右拉伸,这样我们的四分之一圆的范围是从 x = 5 到 x = 10 而不是 x = 6,所以将 (x - 5) 除以 5。

y = 100 * sqrt(1 - ((x - 5) / 5)^2)
                           ^^^^

现在要做的就是用 Math.sqrt 替换 sqrt 和 Math.pow 替换 ^2 以使其成为有效的 Javascript 代码。

y = 100 * Math.sqrt( 1 - Math.pow(((x - 5) / 5), 2) );
于 2013-10-12T09:04:29.290 回答