2016-11-28 12 views
2

私は、値を1〜200のスクロールバーの位置を画像にガンマ補正を適用するための値に変換するための 'ルックアップテーブル'を作るために、単一の配列の定数配列(1..200)を構築したい。スクロールバーの位置をガンマ補正に変換する方法は?

最初の配列値は、7.0 - 9.9の範囲で値を持ちます(Photoshopは9.9を使用します)。真ん中の配列値100は、正確に1.0である必要があります。配列の値200は約0.01になります。

どのアルゴリズムを使用するか教えてください。

私はPower(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という形の2次関数を仮定します。

知られている3値のペアに入力します。

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

3つの方程式+簡単な置換によって、解ける3 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

あなたは[ここ] wellcome [http://chat.stackoverflow.com/rooms/129020/rad-studio-for-android] – Sami

関連する問題