用于计算左侧和宽度值的公式(基于0%​​和100%值)

时间:2011-10-05 13:22:05

标签: math formula

如何找到基于百分比值的公式,根据以下0%和100%值给出左边和宽度值?

对于0,00%,left和with值为:

  • 宽度:658
  • 左:11

对于100,00%,左侧和宽度值将为:

  • 宽度:0(或1)
  • 左:670

我有一个渐变图像,我在其上应用一种颜色,使百分比值成为可视化表示。 渐变图像从11像素开始(左:11为0,00%),宽度为659(左:670为100,00%= 659 + 11)

左边和宽度值需要根据百分比动态计算,以便颜色覆盖渐变。

如果百分比为0%,颜色将覆盖整个渐变(左:11,宽度:659)

------------------------------
|____________________________|
0                            100

如果百分比为100%,颜色根本不会覆盖渐变(左:670,即659 + 11,宽度:1或0)

                              -
|____________________________|
0                            100

1 个答案:

答案 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