Während des freien Falls soll das iPhone auf allen drei Achsen Beschleunigungswerte von 0 senden. Wie lässt sich also die vom iPhone zurückgelegte Strecke ermitteln?
Antworten
Zu viele Anzeigen?Vertrauen Sie nicht auf die Newtonschen Gesetze, sie ignorieren den Luftwiderstand, die Drehung des Iphones usw. Verwenden Sie stattdessen einen empirischen Ansatz. Lassen Sie das Gerät aus verschiedenen Höhen fallen, z. B. 1 m, 2 m, 5 m, 10 m, 30 m... Wiederholen Sie den Vorgang mehrmals für jede Höhe. Messen Sie bei jedem Fall die Zeit. Approximieren Sie die Ergebnisse durch Spline. Berechnen Sie die inverse Funktion.
Die einfachste und naivste Implementierung besteht darin, die Beschleunigungsdaten abzutasten und die folgende Formel zu verwenden.
v+=a*dt;
d+=v*dt;
Aber das kann im Laufe der Zeit abdriften, lesen Sie dies für eine Erklärung, warum und eine bessere Lösung: http://gafferongames.com/game-physics/integration-basics/
Wenn Ihre Beschleunigungsmesser Null anzeigen, haben Sie das Problem zu bestimmen, wann Ihre Bewegung abgeschlossen ist.
Bestimmen Sie also die Abbremsung beim Aufprall, dann die Höchstgeschwindigkeit zu Beginn der Abbremsung und arbeiten Sie sich von dort aus rückwärts vor. Unter der Annahme einer linearen Bewegung, der Abwesenheit von Endgeschwindigkeit und Luftwiderstand, einer linearen Verzögerung (vielleicht) und dass Ihr Telefon noch funktioniert!
Aus dem Stand
Entfernung = 0,5 x Beschleunigung x Zeit 2
Erdbeschleunigung = 9,81 m/s 2
Ich gehe davon aus, dass Sie das Telefon nicht weit genug fallen lassen, um die Endgeschwindigkeit zu erreichen. Falls doch, bezweifle ich, dass Ihre App von großem Nutzen sein wird, wenn Sie das Telefon wiederfinden :)
- See previous answers
- Weitere Antworten anzeigen