我有一个数字,每一步增加一个增量。假设起始编号为0
,增量为{{1}}。
在步骤100
之后,我想开始减少基本增量(#5
)。增量应该平滑减少,并且在步骤100
它等于#10
。
这是一张图,基本上解释了我想做什么(y - 增量,x - 步)。
代码表示:
0
所以问题是如何表示这个?选择修改此弧的平滑度也是很好的。
谢谢!
答案 0 :(得分:1)
如果该曲线是四分之一圆,那么您想要的等式是
y = 20 * Math.sqrt(x * (10 - x));
如果它不是四分之一圈,那么这是任何人的猜测。
答案 1 :(得分: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);
}
答案 2 :(得分: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 = 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) );