2015-12-21 180 views
-2

例如,我有一個距離[0,15]的距離範圍,我需要映射他們從[0,1]的元素的不透明度。如何標準化範圍[a,b]到[c,d],其中a映射到d,b映射到c

與距離0元件應具有不透明度1和元件與距離15應具有不透明度爲0。

我嘗試正常最小 - 最大歸一化,其映射0至0和15至1,但我需要相反。

式我使用用於常規正常化:

((currentValue - min)/ (max - min)) * (newMax - newMin) + newMin

+0

你使用什麼語言?純CSS不能處理算法。 – LoremIpsum

+0

javascript/angular – gaurav5430

+2

我投票結束這個問題作爲題外話題,因爲這是一個數學問題。 –

回答

0

(((CurrentValue的 - 分)/(最大 - 最小))*(newMin - newMax)+ newMax

應該訣竅!

+1

一些解釋? – gaurav5430

2

的公式應該是:

newMax - ((currentValue - min)/ (max - min)) * (newMax - newMin) 

((currentValue - min)/ (max - min)) * (newMax - newMin)計算從根本上新的距離,以目前的價值,並作爲新系列的根在newMax放,所以,我們得到我們的公式。

0

您應該首先將您的範圍數組.reverse()。並從那裏匹配兩個數組的邊界。可能是這樣的:

var distances = [0,1,2,3,4,5,6]; 
var opacity = {min: 0, max: 1}; 

var result = []; 

distances.reverse().forEach(function(distance){ 
    var step = opacity.min+((opacity.max-opacity.min)/distances.length); 
    var item = { 
    distance: distance, 
    opacity: opacity.min+distance*step 
    } 
    result.push(item); 
}); 

console.log(result); 
相關問題