我正在使用jquery ui slider進行縮放。它應該從25%縮放到500%,大約一半的範圍用於大小的前100%。適用於縮放的滑塊值函數
滑塊的值爲1到100.我需要一些可用於基於滑塊值計算縮放的函數,例如,
function getZoom(sliderVal) {
//return number from 25 to 500
}
有什麼建議嗎?
我正在使用jquery ui slider進行縮放。它應該從25%縮放到500%,大約一半的範圍用於大小的前100%。適用於縮放的滑塊值函數
滑塊的值爲1到100.我需要一些可用於基於滑塊值計算縮放的函數,例如,
function getZoom(sliderVal) {
//return number from 25 to 500
}
有什麼建議嗎?
我認爲如果您提供指數擬合,對用戶更好。
JavaScript有Math.pow(a,b)它計算b。
如果您將範圍[0,100]映射到[25%,400%],則該設置更有意義,因爲那時50處於確切的中點並且可以很容易地繪製爲100%。在滑塊50點,然後由四個對應乘除,所以你可以設置
scaling = Math.pow(2,(slider - 50)/25);
,那麼你得到下面的映射:
slider scaling
------------------
0 2**-2 = 1/4 = 25%
25 2**-1 = 1/2 = 50%
50 2**0 = 1 = 100%
75 2**1 = 2 = 200%
100 2**2 = 4 = 400%
現在我明白了,這不回答你的完全是因爲你的規模是[1,100]而不是[0,100],而你想要達到500%而不是400%。
到那裏,你可以先正常化滑塊:
slider_n = (slider - 1) * (100/99);
(此映射[1100]至[0,100]),然後,如果你想通過乘以指數的積極值(log 5)/(log 4),以便您的刻度在500%結束,即
exp = (slider_n - 50)/25.0;
if (exp > 0) exp = exp * Math.log(5)/Math.log(4);
scaling = Math.pow(2,exp);
基本上你想重新調整從1-100到25-500的東西。
100-1 = 99
500-25 = 475
所以這是你的縮放係數 - 在你的滑差的每一個點上的變焦差異475/99
點。
和固定偏移量只是1和25,給您一個簡單的公式:
f(slider_value) =
(slider_value - 1) * (475/99) + 25
當然,如果你想概括,兩個尺度從(a,b)
到(c,d)
:
f(slider_value) =
(slider_value - a) * ((d - c)/(b - a)) + c
現在,如果你想做某種半隻的事情,你可以使用上面的公式來分割你想要的部分,並調用不同的函數來改變滑塊的值。只要它們是連續的(邊界情況下的值是相同的),它應該感覺很好。
對於您的情況,請嘗試將1-50.5映射到25%-100%,50.5-100到100%-500%。