![]() |
Mauskoordinaten (X,Y) in Grad umrechnen?
Hallo Mathekünstler!
Wie kann ich die Mauskoordinaten (X,Y) in Grad umrechnen? Ich habe eine Form. Auf dieser ist ein TImage, das sich immer in Richtung der Maus drehen soll. Gruß Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Ok, du hast sowohl die Mauskoordinaten als auch die Koordinaten des Images gegeben.
Mit
Delphi-Quellcode:
kommst du an die Katheten des Steigungsdreiecks. Wenn ich mich nicht täusche ist tan(alpha) = Gegenkathete / Ankathete.
Abs(x1 - x2);
Abs(y1 - y2); Der Winkel zwischen der Verbindungsgerade Image-Maus und der Horizontalen müsste demnach
Delphi-Quellcode:
sein.
alpha := arctan(Gegenkathete/Ankathete)
lG, hanselmansel €dit: Irgendwie ist meine antwort zu einfach, habe ich in deiner frage was übersehen ??? |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Oder einfach
![]() |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
Delphi-Quellcode:
Gruß
[Fehler] Unit1.pas(29): Undefinierter Bezeichner: 'ArcTan2'
Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Hast du Math eingebunden?
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
dann bekommen ich: [Fehler] Unit1.pas(29): Inkompatible Typen: 'Integer' und 'Extended' Gruß Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Was übergibst du denn als Parameter ? :gruebel:
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
Ich übergebe die Mauskoordinaten (X,Y). Gruß Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zeig mal bitte Quelltext... Du übergibst da irgendwo nen String statt ner Zahl...
Ansonsten würde der Fehler nicht kommen :| Gruß Neutral General |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
Hier ist der Code:
Delphi-Quellcode:
Gruß
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var A: Integer; begin A := ArcTan2(Y, X); Caption := IntToStr(A); end; Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Delphi-Quellcode:
Für Gleitkommazahlen musst du FloattoStr oder FloatToStrF verwenden.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var A: double; // double statt integer -> Gleitkommazahl begin A := ArcTan2(Y, X); Caption := FloatToStr(A*180/pi); { Wenn du keine Kommazahlen willst: Caption := IntToStr(trunc(A*180/pi)); } end; Mit *pi/180 wird die Zahl ins Gradmaß umgerechnet, da du sonst eine etwas unhandliche Zahl im Bogenmaß erhälst. |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
Vielen Dank für Deine Mühe. Ich habe es geschnallt. Noch ne dumme Frage, gibt es in Delphi auch 'FloatToInt' oder soetwas? Oder muss ich Float in Integer selbst umrechnen? Gruß Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Vielen Dank an Alle!
Mit
Delphi-Quellcode:
klappt es.
Round(ArcTan2(Y, X)* 100)
Gruß Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
Muss ich den Sinn erkennen? Mach es doch so:
Delphi-Quellcode:
Round(ArcTan2(Y, X)*180/Pi)
Flare |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
Da bekomme ich zu kleine Werte. Kein Wert über 150. An 360 garnicht zu denken. Gruß Heike |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Delphi-Quellcode:
So müsste es gehen.
round(radtodeg(arctan2(X,Y)))
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Warum bitte jetzt wieder zu ArcTan wechseln :shock: ?
@heike: Das sollte eigentlich stimmen. Beachte aber, dass die Wertemenge der Funktion (mathematisch korrekt) das Intervall [-Pi, Pi] (= -180° bis 180°) und nicht [0, 2 Pi] ist, und durch die auf dem Bildschirm normalerweise nach unten verlaufende Y-Achse Winkel genauso wie Koordinaten gespiegelt sind. [edit]Ok, zu ArcTan2 editiert ;) . RadToDeg ist trotzdem gleichwertig zu * 180 / Pi. [/edit] |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Hab ich schon längst editiert. ;)
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Ich auch :mrgreen: .
Es gäbe sogar einen Fall, in dem RadToDeg <> * 180 / Pi ist: Man redefiniert Pi ;) . Ein Beitrag in "The Daily WTF" wäre einem damit auch gleich sicher. |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Ich dachte Pi wäre eine von der FPU vorgegebene Konstante, die man nicht überschreiben kann? :gruebel:
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Seit wann schert sich Pascal schon um Namensgleichheit :stupid: ?
Delphi-Quellcode:
Nun aber genug mit OT ;) .
const
Pi: Extended = 3; begin Writeln(Format('Pi is exactly %f', [Pi])); Readln; end. |
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Zitat:
|
Re: Mauskoordinaten (X,Y) in Grad umrechnen?
Natürlich, alle Definitionen und Redefinitionen sind schließlich scopeabhängig.
Jetzt aber BiTTe BTT :stupid: . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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 by Thomas Breitkreuz