I have a slider with steps 0-100;
I want the range to be from 100 to 10,000,000.
I've seen some functions scattered around the net but they're all in C++; i need it in javascript.
Any ideas?
I have a slider with steps 0-100;
I want the range to be from 100 to 10,000,000.
I've seen some functions scattered around the net but they're all in C++; i need it in javascript.
Any ideas?
To get the distribution you want, I think you can use this formula:
var value = Math.floor(-900 + 1000*Math.exp(i/10.857255959));
Here's a self-contained page that will print the values you'll get for your 0-100 slider, having passed them through that formula:
<html><body><script>
for (var i = 0; i <= 100; i++) {
var value = Math.floor(-900 + 1000*Math.exp(i/10.857255959));
document.write(value + "<br>");
}
</script></body></html>
The numbers go from 100 to 10,000,000 in what looks to my mathematically-rusty eye to be the distribution you want. 8-)
You can use a function like this:
function logslider(value) {
// value will be between 0 and 100
var min = 0;
var max = 100;
// The result should be between 100 an 10000000
var minv = Math.log(100);
var maxv = Math.log(10000000);
// calculate adjustment factor
var scale = (maxv-minv) / (max-min);
return Math.exp(minv + scale*(value-min));
}
The resulting values match a logarithmic scale:
js> logslider(0);
100.00000000000004
js> logslider(10);
316.22776601683825
js> logslider(20);
1000.0000000000007
js> logslider(40);
10000.00000000001
js> logslider(60);
100000.0000000002
js> logslider(100);
10000000.000000006