AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung TSphere mithilfe MotionSensor drehen?
Thema durchsuchen
Ansicht
Themen-Optionen

TSphere mithilfe MotionSensor drehen?

Ein Thema von derseitzer · begonnen am 21. Apr 2017 · letzter Beitrag vom 10. Mai 2017
Antwort Antwort
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#1

AW: TSphere mithilfe MotionSensor drehen?

  Alt 21. Apr 2017, 21:15
Ich kann auch nur mutmaßen, aber vielleicht hat das etwas mit dem Sensor auf Hardwareebene zu tun? Beziehungsweise könntest du eine Beispielapp zum testen der Sensoren aus dem Appstore holen und dann mal schauen, was die liefern: Wenn die mit Java geschriebene App für diesen Sensor in diesem einen Handy mehr Werte liefert, dann liegt es vielleicht wirklich an der Delphikomponente. Wenn nicht, dann hast du deine Ursache. Vielleicht liefert dieser Sensor nur einen Teil der Daten, weil deine HardwareX nur einen Teil der Sensoren verbaut hat. Das wäre jedenfalls eine plausible Erklärung für die vielen Unveränderlichen. Hast du schonmal ein anderes Handy ausprobiert?

Zu der Beschleunigung: Wenn du nur die Beschleunigung hast und du deine Kugel damit anschubsen willst; also dass deine virtuelle Kugel "die selbe Beschleunigung erfährt wie dein physisch vorhandenes Handy", dann müsste man vermutlich die derzeitige Position der Kugel nebst deren derzeitigen Geschwindigkeit speichern und dann bei jeder Messung die Geschwindigkeit anhand der gemessenen Beschleunigung anpassen. Aber irgendwie müsste man eventuell noch der Kugel eine fiktive Masse geben, wenn ich mich da noch richtig verschwommen an die Formel erinnern sollte

[Edit]
Je länger ich darüber nachdenke und je mehr ich darüber lese, desto logischer erscheint mir, dass AccelerationX/Y/Z die Beschleunigungen im kartesischen Koordinatensystem sind (also wie sehr/heftig habe ich mein Handy entlang der X/Y/Z-Achse beschleunigt?) und die AngleAccelX/Y/Z die Beschleunigungen um die jeweiligen Achsen sind (also wie sehr/heftig habe ich mein Handy um dessen eigene X/Y/Z-Achse gedreht?). Und Motion und Speed sollten klar sein, jedoch scheint das Handy keinen Referenzpunkt zu haben (es nimmt nur die Unterschiede war, aber weiß nicht absolut wie schnell es grade ist...?!?).
[/Edit]

Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!

Geändert von BrightAngel (21. Apr 2017 um 22:07 Uhr)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
778 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TSphere mithilfe MotionSensor drehen?

  Alt 21. Apr 2017, 22:51
Hallo

ich empfehle dir einen Blick in die Doku über "AvailableProperties" zu werfen. Damit kannst du abfragen, welche Fähigkeiten die in deinem Gerät eingebauten Sensoren haben.

Auf
https://sourceforge.net/p/radstudiod...ntationSensor/

gibt es ein sehr gutes Beispiel, dort unter

radstudiodemos-code-2024-branches-RADStudio_Berlin\Object Pascal\Multi-Device Samples\Device Sensors and Services\SensorInfo

Ich hab's rasch auf meinem alten Nexus10 gecheckt. Läuft gut.

Gruss und viel Spass beim Coden.
Michael Gasser
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: TSphere mithilfe MotionSensor drehen?

  Alt 21. Apr 2017, 23:24
Michael: Ich werde mir die Dateien runterladen aber könntest du eventuell trotzdem erklären, was ich nun codieren muss damit es funktioniert
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#4

AW: TSphere mithilfe MotionSensor drehen?

  Alt 21. Apr 2017, 23:32
ich empfehle dir einen Blick in die Doku über "AvailableProperties" zu werfen. Damit kannst du abfragen, welche Fähigkeiten die in deinem Gerät eingebauten Sensoren haben.

Auf
https://sourceforge.net/p/radstudiod...ntationSensor/
Wieder was gelernt. Danke!
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
778 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TSphere mithilfe MotionSensor drehen?

  Alt 22. Apr 2017, 12:08
Hallo derseitzer

ich empfehle dir den Code:

radstudiodemos-code-2024-branches-RADStudio_Berlin\Object Pascal\Mobile Snippets\OrientationSensor

von
https://sourceforge.net/p/radstudiod...ntationSensor/

zu laden und zu testen.

Dieses Beispiel zeigt dir, wie du die Lage deines Geräts im Raum abfragen kannst. (TiltX, TiltY, TiltZ). (Ich nehme an, dass du das willst.)


Wenn du nun die Sphäre je nach Lage deines Tablets anzeigen willst, dann arbeite entweder

- mit der Eigenschaft TSphere.RotationAngle

ODER (wenn du zum Beispiel eine Szene mit mehreren Elementen (nicht nur TSphere) darstellst)

- du lässt die Sphäre fix und arbeitest mit einer Kamera (TCamera), welche sich je nach ermittelten Tilt Werten um deine Sphäre bewegt. In diesem Fall musst du die Position und den Rotationswinkel deiner Kamera aufgrund der TiltWerte und dem von dir gewünschten Abstand (Kamera,Sphäre¦Szene) berechnen.


Gruss und viel Spass beim Coden...
Michael Gasser
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: TSphere mithilfe MotionSensor drehen?

  Alt 24. Apr 2017, 09:59
vielen dank michael2!
Bei mir sind die Tilt-Werte immer 0.. die Heading werte allerdings nicht :/ warum?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#7

AW: TSphere mithilfe MotionSensor drehen?

  Alt 24. Apr 2017, 10:05
Zitat:
Eines davon gibt es auf Sourceforge.
Eigentlich sind das alle.
Wenn man sowieso die neuste Delphi-Version hat, kann man damit das Demo-Verzeichnis von Delphi aktualisieren.

Nur bei älteren Delphis muß man etwas aufpassen, da dort eben immer alles ans aktuellste Delphi angepasst wird und dann nicht immer alles in allen älternen Versionen mehr funktioniert.

Es wäre zu praktisch, wenn Emba da direkt beim DelphiSetup das SVN mit installiert (also die SVN-Kontrolldateien im Demoverzeichnis)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: TSphere mithilfe MotionSensor drehen?

  Alt 24. Apr 2017, 10:20
Dummy1.RotationAngle.X := 8*OrientationSensor1.Sensor.HeadingX;
Dummy1.RotationAngle.Y := 8*OrientationSensor1.Sensor.HeadingY;
Dummy1.RotationAngle.Z := 8*OrientationSensor1.Sensor.HeadingZ;

Dieser Code funktioniert allerdings liegt der Wertebereich der Headingwerte irgendwo ziwschen -45 und 45 (glaube ich zumindest).
Deshalb habe ich mal aus Testzwecken die Werte mal 8 genommen. Nun fiel mir beim Testen auf, dass meine Tsphere extrem empfindlich reagiert und ich die Werte irgendwie Runden sollte..
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
778 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TSphere mithilfe MotionSensor drehen?

  Alt 24. Apr 2017, 12:00
Zitat:
Bei mir sind die Tilt-Werte immer 0.. die Heading werte allerdings nicht :/ warum?
Hast du mal gecheckt, ob dir dein Gerät den Wert z.V. stellt?

Das wird in deinem Beispiel hier geprüft:

Delphi-Quellcode:
procedure TOrientationSensorForm.OrientationSensor1SensorChoosing(
  Sender: TObject; const Sensors: TSensorArray; var ChoseSensorIndex: Integer);

...
...
TCustomOrientationSensor.TProperty.TiltX in TCustomOrientationSensor(Sensors[I]).AvailableProperties

Wenn die Eigenschaft nicht z.V. steht, dann hol dir rasch ein neues Gerät .

Wenn die Eigenschaft Tilt vorhanden ist, dann solltest du wohl einen Blick in die Umrechnung "Vektor > Winkel" werfen (ich nehme an, du spielst mit einem Android Gerät), also in die unit System.Android.Sensors :

function TAndroidNativeRotationSensor.GetDoubleProperty(Prop: TCustomOrientationSensor.TProperty): Double; eventuell in diese Zeile:

Len := 1 - sqX - sqY - sqZ;
Gruss
Michael Gasser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz