Einzelnen Beitrag anzeigen

axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#1

Gradmaß zu X,Y Koordinaten

  Alt 17. Sep 2007, 22:42
Hallo Leute,

nachdem ich heute, wie es auch bisher in diesem Forum war, bestens bedient worden bin codevervollstaendigung, gleich noch ein Problemchen. Zurzeit arbeite ich an einem Projekt zur Auswertung von Schussergebnissen. Kurz zusammengefasst; Mietgliederverwaltung, Disziplinen, Mannschaften, Teilnehmer, Schießarten, Schussbilddiagramme, Turniere, Preisgelder usw.
alles in allem, alles was so eine DB basierte Anwendung so hergibt.

Das Ganze ist eine Netzwerkfähige Lösung, basierend auf dem MSSQL 2005 Express bzw. MSSQL Server >7. Das ist zwar Arbeit, aber da kenne ich mich aus (DB) und da bin ich zuhause. Nun bin ich auf ein Problem gestoßen wo ich nicht so genau weiß, wie es zu therapieren ist.

Um was geht es:

Bei der Schußauswertung gibt der Schütze seine Scheiben ab die dann von einer sog. Auswertungsmaschine ausgewertet werden. Dazu wird Scheibe für Scheibe in die Auswertungsmaschine gelegt, die mittels Scanner die Treffer auswertet. Die Auswertemaschine ist per RS232 Schnittstelle mit dem Rechner verbunden und sendet die ausgelesenen Ergebnisse an die Anwendung die es anfordert. In diesem speziellen Fall sendet die Auswertemaschine die Ergebnisse in folgender Formatierung:

String + CheckSumme + CR:

Das sieht dann so aus:

Sch=[Schußnr.];[Ringwert];[Teilerwert*];[Winkel*];[Flag*];[CheckSum*]

(Original Datenstring von der Auswertemaschine pro Schuß)

SCH=3;10.0;358.6;101.5;G#


* Teilerwert: Je kleiner der Teilerwert umso näher ist man der Mitte, ergo dem Zehner.
* Winkel: in Grad; Oben ist 0° rechts 90° usw.
* Flag: G = Gültig; U = Ungültig; K = Schuß muss kontrolliert werden.
* CheckSum <32, wird 32 dazuaddiert (XOR-Verknüpfung aller Zeichen).

Nachdem alle Scheiben (Serie) ausgewertet worden sind, soll ein Schußbild der Serie angezeigt werden (meist 40 Schuß auf 20 Scheiben, ergo 2 Schuß pro Scheibe). Das bedeutet: Alle abgegebenen Schüsse (Serie) sollen auf einer Scheibe angezeigt werden damit sich der Schütze einen Überblick über seine Serie verschaffen kann. Außerdem soll nach jeder Auswertung, also pro Scheibe, die Treffer auf der Scheibe im Programm angezeigt werden.

Mein Problem ist:

Es gibt Auswertemaschinen die senden keinen Winkel in Grad, sondern gleich die richtigen Koordinaten zu, z.B. X:120, Y: 230 aber diese eine sendet das im Gradmaß. Wie rechne ich das um, um die X, Y Koordinaten zu bekommen, um den Schuß, Schüsse auf der Scheibe darzustellen.

Im Forum habe ich einen Post gefunden Gradmaß zu Mauskoordinaten, in dem X, Y zu Gradmaß umgerechnet wird. Geil dachte ich, dann muss ich nur noch andersrum rechen, doch Pustekuchen, das funktioniert nicht. Also packte ich meine verstaubten Schulbücher aus und zog mir Trigonmetrische Funktionen wieder rein, aber irgendwie machte es nicht: Heureka. Deshalb habe ich eine kleine Anwendung geschrieben die das Problem verdeutlichen soll.

Zur Anwendung:

Nach dem Start wird eine Zielscheibe gezeichnet und ein Treffer wird angezeigt. Dieser Treffer wird auf der original Scheibe, von der Auswertemaschine, mit einem Winkel (Gradmaß) von 101.5 angegeben. Der oben angegebene Rückgabestring von der Auswertemaschine stimmt mit der Trefferanzeige in meiner Anwendung ± 1mm überein.

Wie könnt Ihr mir helfen:

Wie muss ich rechnen, damit ich den Treffr den ich als Gradmaß von der Auswertemaschine erhalte, genau dort in meiner Anwendung platziere, wie dieser auf der Originalscheibe zu sehen ist?


Alexander
Angehängte Dateien
Dateityp: rar target_v1.0_111.rar (200,5 KB, 5x aufgerufen)
Alexander Lang
  Mit Zitat antworten Zitat