Ich versuche, einen Tiefpassfilter für Kompasspeilung Eingang zu implementieren, und ich habe eine Grundfunktion zusammen, die wie folgt aussieht:Tiefpass Kompass Glättung Seltsamkeit
var smoothing = 0.15;
function lowPass(degree) {
var oldVal = $scope.compassBearing || 0;
var smoothedValue = oldVal + smoothing * (degree - oldVal);
return smoothedValue;
}
Funktioniert prima, außer denn wenn der Kompasspeilung Norden verläuft (dh. ändert sich schlagartig 0-359 oder umgekehrt.
Hat laufen jemand in ein ähnliches Problem, und wenn ja, wie wurde es gelöst?
Was ist das Problem? 'smoothValue' wird z. 361, -2, usw.? – dannyjolie
Es ist, dass die Glättung versucht, das Lesen um die andere Seite zu "glätten" - also anstatt zu glätten Übergang von zum Beispiel 356 -> 358 -> 0 -> 2, versucht es, die beiden Werte so schnell den Kompass zu mitteln dreht sich in die entgegengesetzte Richtung, um die neuen Werte zu treffen. – opticon
Ja, das habe ich mir gedacht. Habe dein Skript selbst ausprobiert und dein wirkliches Problem gesehen. Übergang von z.B. 359 bis 10 geht "rückwärts", nicht über 0. Es war nicht klar aus der Frage. – dannyjolie