Frage

Ich verwende die Jquery ui Schieber zum Zoomen. Es sollte von 25% auf% vergrößern 500, und etwa die Hälfte des Bereichs wird für das erste% 100 der Größe verwendet wird.

Der Schieber hat Wert von 1 bis 100. Ich eine Funktion benötigen, die verwendet werden können, um zu berechnen, basierend auf dem Schieberegler Wert Zoomen, z.

function getZoom(sliderVal) {
    //return number from 25 to 500
}

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Ich denke, es ist besser für den Benutzer, wenn Sie exponentielle Anpassung liefern.

Javascript Math.pow (a, b), die berechnet a b .

Die Einstellung macht mehr Sinn, wenn Sie Bereich map [0.100] bis [25%, 400%], weil dann 50 an der genau in der Mitte ist und leicht zu 100% auf der Karte vorgenommen werden. 50 Punkte auf dem Schieber entsprechen dann Division oder Multiplikation mit vier, so können Sie einstellen,

scaling = Math.pow(2,(slider - 50) / 25);

Also dann erhalten Sie die Abbildung unten:

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%
Jetzt sehe ich, dass diese Antwort Ihre Frage nicht vollständig, weil Ihre Waage ist [1100] statt [0.100], und Sie wollen 500% anstelle von 400% erreichen.

Um dorthin zu gelangen, können Sie zuerst normalisiert die Schieber:

slider_n = (slider - 1) * (100/99);

(diese Karten [1.100] bis [0100]), und dann, wenn Sie wollen, multiplizieren positive Werte des Exponenten von (log 5) / (log 4), so dass Ihre Skala Enden bei 500%, dh

exp = (slider_n - 50) / 25.0;
if (exp > 0) exp = exp * Math.log(5)/Math.log(4);
scaling = Math.pow(2,exp);

Andere Tipps

Im Grunde wollen Sie rescale etwas von 1-100 bis 25-500.

100-1 = 99
500-25 = 475

, so dass Ihr Skalierungsfaktor -. Jeder Punkt Unterschied auf dem Schieber ist 475/99 Punkte Unterschied auf dem Zoom

Und die feste Offset ist nur 1 und 25, so dass Sie eine einfache Formel:

f( slider_value ) =
    ( slider_value - 1 ) * ( 475 / 99 ) + 25

Natürlich, wenn Sie verallgemeinern wollen, zwei Skalen von (a,b) zu (c,d):

 f( slider_value ) =
     ( slider_value - a ) * ( ( d - c ) / ( b - a ) ) + c

Nun, wenn Sie irgendeine Art von Halb Hälfte, was tun mögen, können Sie einfach die obige Formel verwenden, um die Abschnitte Sie wollen zu teilen, und verschiedene Funktionen aufrufen Variation auf den Wert des Gleiters. Solange sie kontinuierlich sind (die Werte sind die gleichen für die Grenzfälle) es wohl fühlen sollte.

Für Ihren Fall versuchen Mapping 1-50,5 bis 25% -100%, 50,5 bis 100 auf 100% -500%.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top