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) );