如何找到基于百分比值的公式,根据以下0%和100%值给出左边和宽度值?
对于0,00%,left和with值为:
对于100,00%,左侧和宽度值将为:
我有一个渐变图像,我在其上应用一种颜色,使百分比值成为可视化表示。 渐变图像从11像素开始(左:11为0,00%),宽度为659(左:670为100,00%= 659 + 11)
左边和宽度值需要根据百分比动态计算,以便颜色覆盖渐变。
如果百分比为0%,颜色将覆盖整个渐变(左:11,宽度:659)
------------------------------
|____________________________|
0 100
如果百分比为100%,颜色根本不会覆盖渐变(左:670,即659 + 11,宽度:1或0)
-
|____________________________|
0 100
答案 0 :(得分:2)
您正在寻找的公式可以表示为f(x) = ax+b
。 f(x)是你想要得到的宽度,x是百分比,而a& b是(当前未知的)常数。
如果你有两个点(例如0和100)的f(x)值,你可以像这样推导出公式:
f(0) = valueAtZero = a*0 + b
b = valueAtZero
f(100) = valueAtOneHundred = a*100 + b
valueAtOneHundred - b = a*100
a = (valueAtOneHundred - b) / 100
现在你有a和b,你可以解决你想要的任何百分比x。上面的过程转换为伪代码:
function getValueAtXPercent(x, valueAtZero, valueAtOneHundred):
b = valueAtZero
a = (valueAtOneHundred - b) / 100
return a*x + b
现在你可以调用getValueAtXPercent(50,658,1),它会返回你的宽度值50%。
这是python中的具体实现:
def f(x, valueAtZero, valueAtOneHundred):
b = valueAtZero
a = (valueAtOneHundred - b) / 100.0
return a*x + b
def showStats(percent):
left = f(percent, 11, 670)
width = f(percent, 658, 0)
output = "At {0}%, left={1} and width={2}".format(percent, left, width)
print output
showStats(0)
showStats(50)
showStats(100)
输出:
At 0%, left=11.0 and width=658.0
At 50%, left=340.5 and width=329.0
At 100%, left=670.0 and width=0.0