Tischneigung messen

  • 6 Antworten
  • Neuester Beitrag
Diskutiere Tischneigung messen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
D

DoubleDon

Neues Mitglied
Hallo und guten Tag!

Ich würde gerne mit Hilfe meines Smartphones die Neigung eines Tisches (feste Maße) messen, also sowas in wie weit man den Tisch an einer Seite anheben muss damit dieser gerade steht.

Habt ihr eine Ahnung wie man da vorgeht?

Meine Idee war es das Handy 2x messen zu lassen, d.h. es in die Mitte des Tisches zu legen und dann jeweils ein mal diagonal die Neigung aufzunehmen und daraus was schönes zu errechnen.

Ist das ein richtiger Ansatz oder gibt es da einfachere Methoden?
Wie würdet ihr vorgehen und mit welchem Sensor?

lG
 
A

amfa

Experte
Position Sensors | Android Developers

Wobei es da ja zig Wasserwaagen Apps schon gibt.
Dazu muss aber auch gesagt werden, dass es stark auf die Sensoren des Telefons ankommt wie gut das funktioniert.
Wenn es wirklich gerade sein muss, geht nichts über eine gute alte echte Wasserwaage ;)
 
ui_3k1

ui_3k1

Gesperrt

Hallo.
Ich habe mit einer bereits vorhandenen app (Tool Box hieß die glaube ich) recht gute Erfahrungen mit der Genauigkeit gemacht.. Darüber hinaus bin ich mir fast sicher dass eine einzige Messung schon ausreichend ist.
Durch die XYZ Achsen lässt sich die Neigung mit einer Messung vollständig erfassen. Den Rest kann man Annäherungsweise mit dem Dreisatz berechnen (beim schiefen Tisch ist es ja kein rechter Winkel - deswegen annäherungsweise)
 
D

DoubleDon

Neues Mitglied
ja ich habe noch einige Probleme mich da irgendwie reinzufinden..

Ablauf:
Ich lege das Handy in die Mitte des Tisches. Hole mir mit Hilfe von getDefaultSensor(Sensor.TYPE_ORIENTATION); die 3 Werte und berechne damit und mit
Code:
onSensorChanged
        double tischRadius = 70.0;
        double achseZ = Math.floor(sensorEvent.values[0] * 100)/100.0;
        double achseY = Math.floor(sensorEvent.values[1] * 100)/100.0;
        double achseX = Math.floor(sensorEvent.values[2] * 100)/100.0;
        double verstellen = Math.tan(Math.toRadians(achseY))*tischRadius;
        hFld.setText(verstellen + "");
        xFld.setText(achseZ + "");
        yFld.setText(achseY + "");
        zFld.setText(achseX + "");
die Höhe.

Ist das so vom Prinzip richtig oder würdet ihr das mit nem anderen Sensor machen?
 
ui_3k1

ui_3k1

Gesperrt

Warum *100 / 100?
Grundsätzlich sieht das für einen runden Tisch doch schon mal ganz gut aus :)
 
D

DoubleDon

Neues Mitglied
Mit
Math.floor(sensorEvent.values[0] * 100)/100.0;
rundest du auf 2 Nachkommastellen.

Mein Problem ist nur, dass ich keine Ahnung habe wie ich mit Hilfe von den X und Y Werten welche für 4 Ecken herausbekommen kann.

Kann mir da jemand weiterhelfen?
 
ui_3k1

ui_3k1

Gesperrt

Vielleicht hilft dir das...
Device Orientation: Neigung und Position von Mobilgeräten in JavaScript nutzen » t3n
Mae vom Dreieck berechnen - Seiten Hhe Winkel Flcheninhalt Seite Formel

Ich denke mit nem Stift und nem Blattpapier lässt sich gut "herausfinden" welche Gleichungen nun wichtig sind. Kann mir vorstellen, dass du noch ein EditText brauchst um anzugeben, welche Höhe der Tisch hat bzw. wie lang die Strecke vom Messpunkt bis zum Ende ist (bzw. die gesamte Länge wäre wahrscheinlich auch nicht verkehrt)...

btw:
Warum rundest du da schon? Im Prinzip kostet es an dieser Stelle nur unnötig Rechenleistung (auch wenn diese definitiv nicht ins Gewicht fällt) und das Ergebnis wird schon ungenauer.
Vielleicht wäre es sinnvoller am Ende einfach die überschüssigen Stellen zu streichen.