Kleines Matherätsel
j4nk3y
- javascript
- mathematik
Servus zusammen,
Ich stehe gerade etwas auf dem Schlauch bei folgendem:
function update(value){
var date = new Date();
var time = date.getTime() / 1000;
value.number = Math.floor(value.number * Math.exp(3.8 * Math.pow(10,-6) * (time - value.time)));
timeouts.push(setTimeout(function(){update(value)},1000));
}
Man möchte meinen, dass dies simples Exponentielles Wachstum sei, jedenfalls ist es so gedacht. Dazu ist value.number
irgendeine Zahl größer 0 und value.time
ein unix-timestamp der vorher von php zurückkommt.
Nun ist mir gerade durch Zufall aufgefallen, dass wenn ich die Aufrufzeit des setTimeout
vergrößer oder verkleinere, das Ergebnis schneller oder langsamer wachst. Und ich verstehe ehrlich gesagt nicht genau warum.
Falls mir dort jemand kurz auf die Sprünge helfen könnte wär das klasse!
Noch einen schönen 1. Weihnachtsfeiertag.
Jo
Oh Moment...
Ich glaube mich beschleicht gerade eine Ahnung. Dazu einmal kurz den Code erweitern:
var data = [];
// nach ajax sieht data vereinfacht so aus: data.value
function update(data){
var date = new Date();
var time = date.getTime() / 1000;
$.each(data, function(key, value){
data[key].number = Math.floor(data[key].number * Math.exp(3.8 * Math.pow(10,-6) * (time - data.value.time)));
});
timeouts.push(setTimeout(function(){update(data)},1000));
}
Jetzt wird es mir noch deutlicher... hätte ich auch vorher dran denken können...
timeouts.push(setTimeout(function(){update(data)},1000));
dieses data
stimmt nicht mit dem Ergebnis data[key].number
überein sonder immer noch mit dem übergebenen Wert an die Funktion.
Da liege ich doch richtig, oder?
Edit: Ähm Nein.
Edit 2: AHHH jetzt weiß ich's!
Gruß
Jo
Hey,
ist doch schön wenn man seine Probleme selbst lösen kann ;)
In diesem Sinne darf hier alles gelöscht werden ;)
Frohes fest euch noch!
Gruß
Jo