![]() |
Winkel von einer Position(x,y) aus berechnen.
Hallo liebe Delphi-Freunde,
ich möchte von einer Position aus abhängig von einer Case-Anweisung verschiedene Winkelpositionen berechnen, und von dem Winkel aus eine Gerade zeichnen. Der Winkel soll sich dabei um 90 Grad verschieben. Leider verstehe ich nicht, wie ein solcher Winkel berechnet wird, da nach folgendem Code ja eine neue Position berechnet wird und kein neuer Winkel? Zudem ist y immer =0 und verschiebt sich nicht. Wie berechne ich ausgehend von einer Position einen Winkel der sich jeweils um 90grad dreht? Hat einer eine Idee? Vielen Danke für jegliche Hilfe.
Delphi-Quellcode:
case Zeichnen[i] of
'Forward': begin x := x + round(sin(90/ 180 * PI)); y := y + round(cos(90/ 180 * PI)); end; 'Backward': begin x := x + round(sin(90 / 180 * PI)); y := y + round(cos(90 / 180 * PI)); end; 'Zeichne': Form1.Image1.Canvas.LineTo(x,y); end; end; |
AW: Winkel von einer Position(x,y) aus berechnen.
Liste der Anhänge anzeigen (Anzahl: 1)
Deine Frage ist streng genommen unsinnig, da eine Position keinen Winkel hat. Ich nehme mal an, du möchtest den Winkel des Dreiecks berechnen, das von dem Punkt mit dem Ursprung und der X-Achse gebildet wird (s. Skizze). Das geht mit dem „Arcus-Tangens“, der Umkehrfunktion des Tangens (Yp/Xp). In Delphi heißt die Funktion
![]() Allerdings hat ArcTan die unpraktische Eigenschaft, dass man 0° und 180° nicht unterscheiden kann. Deshalb gibt es in der Math-Unit die Funktion ArcTan2, die dieses Problem durch eine zusätzliche Fallunterscheidung umgeht. Achja, und der Winkel wird von ArcTan/ArcTan2 natürlich im Bogenmaß zurückgegeben... |
AW: Winkel von einer Position(x,y) aus berechnen.
Von einer Position aus kann man keinen "neuen Winkel" berechnen, da sie nichtmals einen alten hat. Eine Position ist ein Punkt. Man müsste schon eine Richtung haben.
|
AW: Winkel von einer Position(x,y) aus berechnen.
Liste der Anhänge anzeigen (Anzahl: 1)
Die Ausgansposition des Winkels ist theoretisch eine horizontale nach rechts orientierte Linie, die sich nun um 90 Grad verschieben soll. Auf der neue Gerade soll dann eine Linie gezeichnet werden. Im Anhang ist dazu eine mehr oder weniger schöne Zeichnung:) Vielen Dank euch
|
AW: Winkel von einer Position(x,y) aus berechnen.
die Werte hier: round(sin(90/ 180 * PI)) liegen zwischen -1 und 1, multipliziere hier doch mal die gewünschte Linienlänge mit rein (round erst hinterher).
|
AW: Winkel von einer Position(x,y) aus berechnen.
Also ich würde mir mal Gedanken machen die Drehung mit einer Funktion zu berechnen.
Welche Parameter gehen rein in die Funktion? Ein Richtungsvektor und der Drehwinkel. Und raus kommt der neue Richtungsvektor. Für die Umrechnung von Grad in Radiant gibt es übrigens auch eine Funktion: ![]() Funktionen sind essentiell zum Aufbau von Software. Man schreibt also nicht immer wieder
Delphi-Quellcode:
sondern man nimmt
winkel / 180 * pi
Delphi-Quellcode:
.
DegToRad(winkel)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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