Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Zurückgelegte Distanz erhalten?? (Seit Start Cartridge)

Adventure-Cartridges für PDAs oder Garmin Colorado/Oregon

Moderator: m.zielinski

bodenseepingu
Geomaster
Beiträge: 583
Registriert: Do 8. Mär 2007, 21:48
Wohnort: 88682 Salem

Re: Zurückgelegte Distanz erhalten?? (Seit Start Cartridge)

Beitrag von bodenseepingu »

Hier noch für diejenigen, die lieber den Code hier sehen die wesentlichen Bestandteile - Erläuterungen sind im Code:

Code: Alles auswählen

--
-- Created by IntelliJ IDEA.
-- User: andi
-- Date: 19.04.12
-- Time: 19:00
-- To change this template use File | Settings | File Templates.
--

-- LUA Code to measure distance of Player
-- Interface to Urwigo:
--
-- init-routine: store_current_position() - should be called on start of measurement or after restore of cartridge
--walked_distance(): should be called via timer - e.g. every one or 2 seconds


local last_pos = ZonePoint(0,0,0)  --not persistent, so init-function should be called after restore of cartridge


function store_current_position()
    --just store the current position
    last_pos = Player.ObjectLocation
end


function get_gps_accuracy()
    local pos_acc = Player.PositionAccuracy
    local gps_acc = pos_acc:GetValue 'm'
    return gps_acc
end


function walked_distance()  --return walked_distance - if more than twice position accuracy
   --try to work with PositionAccuracy

   local d, b = Wherigo.VectorToPoint(last_pos, Player.ObjectLocation)
   local dn = d:GetValue 'm'
   local gps_acc = get_gps_accuracy()
   if dn > 2 * gps_acc then
       store_current_position()
       --not used last_bearing = b - if it is interesting in which direction player is walking
       return dn  --return distance
   end
   return 0
end
Bild
bodenseepingu
Geomaster
Beiträge: 583
Registriert: Do 8. Mär 2007, 21:48
Wohnort: 88682 Salem

Re: Zurückgelegte Distanz erhalten?? (Seit Start Cartridge)

Beitrag von bodenseepingu »

Die Aufsummierung der Gesamtstrecke im obigen Code habe ich nach Urwigo ausgelagert in die Timer-Funktion. D.h. die Routine walked_distance() gibt entweder 0 zurück, wenn weniger als zwei mal die aktuelle Positionsungenauigkeit zurückgelegt wurde oder die Entfernung zum zuletzt gespeicherten Punkt.

Jetzt bin ich kein Mathematiker - aber ich würde das Ding als eine diskrete Annäherungsfunktion an die tatsächlich zurückgelegte Strecke betrachten. :p
Bild
Benutzeravatar
Krolock
Geocacher
Beiträge: 227
Registriert: Fr 14. Jan 2011, 09:31

Re: Zurückgelegte Distanz erhalten?? (Seit Start Cartridge)

Beitrag von Krolock »

bodenseepingu hat geschrieben: Jetzt bin ich kein Mathematiker - aber ich würde das Ding als eine diskrete Annäherungsfunktion an die tatsächlich zurückgelegte Strecke betrachten. :p
Da helfen bestimmt die Annäherungsalgorithmen der GPSr Empfänger beim Aufzeichnen des Tracks. Ich denke im Automatikmodus (Aufnahme von GPS-Positionen und Glätten des Graphes) arbeiten die Geräte von Garmin genauso.
Es wäre lediglich dann abweichend, wenn du innerhalb der Positionsungenauigkeit ständig hin und her laufen würdest.

Wer es genauer haben möchte, darf nach Graphentheorie und Glättung von Graphen, bzw. Zusammenführung von Kanten googeln. Einen groben Einstieg bietet auch http://de.wikipedia.org/wiki/Exponentie ... C3%A4ttung
Antworten