2016-11-28 31 views
2

我想構建一個單一數字的常量數組(1..200),以創建一個'查找表',將具有值1 - 200的滾動條位置轉換爲用於將伽馬校正應用於圖像的值。如何將滾動條位置轉換爲gamma校正?

第一陣列值將具有值某處anound 7.0 - 9.9(Photoshop使用9.9)。中間一個,數組值100,需要精確到1.0。數組值200將約爲0.01。

誰能告訴我要使用哪種算法?

我一直在試圖讓使用基於周圍的功能電源(I,2.2)在一些測試代碼「試錯」的陣列,但毫無進展。

我正在使用Delphi。我不是在問代碼,只是朝着正確的方向前進。任何幫助將非常感激。

+0

代替這種_lookup table_的,我只想用一個函數來直接計算。 – NGLN

回答

0

爲什麼不只是採取差異和分裂的步驟數。

Ex。 9.9-1/100然後你知道增加的數量。

我在JavaScript中做了一個簡單的例子來說明我的意思:

doWork = function() { 

    var result = ''; 
    var first = 9.9; 
    var middle = 1; 
    var last = 0.01; 

    var firstSteps = (first - middle)/99; 
    var lastSteps = (middle - last)/100; 

    result = result + 'first=' + firstSteps + '<br>'; 
    result = result + 'last=' + lastSteps + '<br>'; 

    var value = first; 
    for (var i = 1; i < 201; i++) { 
     var showValue = Math.round(value * 100)/100; 
     result = result + i + ' => ' + showValue + '<br/>'; 
     if (i > 99) { 
      value = value - lastSteps; 
     } 
     else if (i == 99) { 
      value = middle; 
     } 
     else { 
      value = value - firstSteps; 
     } 
    } 

    document.getElementById('info').innerHTML = result; 

} 

這裏是小提琴: https://jsfiddle.net/tuv5vfst/

4

這是不是一個真正的編程問題,但數學中的一個。

假設一個二次函數,形式爲y = ax + bx + c。

填充已知的三值對:

9.9 = a + b + c 
1 = 10000a + 100b + c 
0.01 = 40000a + 200b + c 

三個方程+三位unknows =通過簡單的替換可解的。

9.9 = a + b + c 
c = 9.9 - a - b 

1 = 10000a + 100b + c 
1 = 10000a + 100b + 9.9 - a - b 
1 = 9999a + 99b + 9.9 
1 - 99b = 9999a + 9.9 
-99b = 9999a + 9.9 - 1 
-99b = 9999a + 8.9 
b = -101a - 8.9/99 

0.01 = 40000a + 200b + c 
0.01 = 40000a + 200b + 9.9 - a - b 
0.01 = 39999a + 199b + 9.9 
0.01 = 39999a + 199(-101a - 8.9/99) + 9.9 
0.01 = 39999a - 20099a - 17.89 + 9.9 
0.01 = 19900a - 7.99 
0.01 - 19900a = -7.99 
-19900a = -8 
a = 8/19900 
a = 0.000402 

b = -101a - 8.9/99 
b = -808/19900 - 8.9/99 
b = -0.1305 

c = 9.9 - a - b 
c = 10.0301 

換句話說:Gamma = 0.000402 * Pos^2 - 0.1305 * Pos + 10.0301

+0

您的歡迎[here](http://chat.stackoverflow.com/rooms/129020/rad-studio-for-android) – Sami