目前,我有一个控件,需要添加工具以应用各种敏锐度(或敏感度)。这个问题最好用一幅图来说明:
Graph http://img87.imageshack.us/img87/7886/control.png
正如您所看到的,我的X和Y轴都有100的任意限制-这应该足以解释这种解释。目前,我的控件是红线(线性行为),但我想为其他3条曲线(或更多曲线)添加功能,即如果控件更敏感,则设置将忽略线性设置,并选择三条线中的一条。起点始终为0,终点始终为100。
我知道指数太陡峭了,但似乎找不到前进的方向。有什么建议吗?
发布于 2009-06-24 12:37:53
我提出了一个简单的公式,它(我相信)能满足您的需求。为了得到一个完整的“四分之一圆”,这是您的极端情况,您可以使用(1-cos((x*pi)/(2*100)))*100
。
我建议你取y=x和y=之间的加权平均值(1-cos((x*pi)/(2*100)*100。例如,要使其非常接近线性(99%线性),请采用:
y = 0.99*x + 0.01*[(1-cos((x*pi)/(2*100)))*100]
或者更一般地说,假设线性水平是L,它在区间0,1内,你的公式是:
y = L*x + (1-L)*[(1-cos((x*pi)/(2*100)))*100]
编辑:我将cos(x/100)
更改为cos((x*pi)/(2*100))
,因为对于cos结果在1,0的范围内,X应该在0,pi/2的范围内,而不是0,1,抱歉最初的错误。
发布于 2009-06-24 11:32:29
您可能正在寻找像polynomial interpolation这样的东西。二次/三次/四次插值应该给出你在问题中显示的曲线类型。您显示的三条曲线之间的差异可能只需通过调整系数(间接确定陡度)即可实现。
发布于 2009-06-24 11:43:34
从0到1的x
的y = x^p
图将执行您想要的操作,因为p
从1向上变化(这将显示红线)。随着p
的增加,曲线将被越来越多地“推入”。p
不必是整数。
(你必须进行缩放才能得到0到100,但我相信你可以做到)
https://stackoverflow.com/questions/1040437
复制