Java 慢慢减少数量

Java 慢慢减少数量,java,javascript,math,Java,Javascript,Math,我有一个数字,每一步都会增加一个增量。让我们假设起始编号为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 =

我有一个数字,每一步都会增加一个增量。让我们假设起始编号为
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;

} 
//x-步骤
//y增量
var值=0;
对于(变量x=0;x<10;x++){
变量y=100;
如果(x>5){
//y=???
} 
值+=y;
} 
所以问题是如何表示这一点?如果有一个选项可以修改此圆弧的平滑度,那也太好了


谢谢大家!

如果那条曲线是四分之一圆,那么你想要的方程式是

y = 20 * Math.sqrt(x * (10 - x));
如果它不是四分之一圆,那么这是任何人的猜测。

If(x=10)
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);
}
y=0; 否则{ 双半径=100; 双偏移=(x-5)*20; y=数学sqrt(raidus*半径-偏移量*偏移量); }

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

解释(可选) 警告!可能包含数学

让我们从一个简单的例子开始,一个半径为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

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

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

那个弧应该是四分之一圆吗?或者其他形状?我想因为和罪是你的朋友here@DavidWallace问题是我不知道怎么命名。越接近步骤
#10
,增量越小,但在步骤
#10
中,它必须是
0
。不,@AntonD,不是cos和sin,如果是四分之一圆。平方、平方根、乘法和减法。好吧,@Marvin3,在两点之间可以画很多不同类型的形状。四分之一圆只是一种选择。它可以是抛物线,例如正弦曲线,或其他十几个选项。你问的是一个形状的数学公式,却没有告诉我们形状是什么。这不是JavaScript,但看起来是对的。也可以简化。(
raidus*radius-offset*offset=-400x*x+4000x=400(10-x)x=(20*20)(10-x)x
)公平地说,OP确实将其标记为Java和JavaScript。我认为这意味着实际的数学比使用什么语言更重要。
y = 100 * sqrt(1 - ((x - 5) / 5)^2)
                           ^^^^
y = 100 * Math.sqrt( 1 - Math.pow(((x - 5) / 5), 2) );