1

各ステップで増分されている数値があります。0開始番号がで、増分が であると仮定しましょう100

ステップ#5以降で、基本増分 ( ) を減らし始めたいと思います100。増分はスムーズに減少し、ステップ#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

これにより、(5|100) で始まり (10|0) で終わる完全な 1/4 円が得られます。

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

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

説明(オプション)

警告!数学が含まれている可能性があります。

より単純なケースから始めましょう。半径が 1 で中心が (0|0) の 1/4 円です。私たちはそれを知ってい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)
                           ^^^^

ここで行うことはすべて、sqrt を Math.sqrt に、^2 を Math.pow に置き換えて、有効な Javascript コードにすることです。

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

その曲線が 1/4 円の場合、必要な方程式は次のとおりです。

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 に答える