Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Winkel von einer Position(x,y) aus berechnen. (https://www.delphipraxis.net/171535-winkel-von-einer-position-x-y-aus-berechnen.html)

Mojito 11. Nov 2012 13:05

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;

Namenloser 11. Nov 2012 13:45

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 Delphi-Referenz durchsuchenArcTan.

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...

Medium 11. Nov 2012 13:45

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.

Mojito 11. Nov 2012 14:35

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

Bummi 11. Nov 2012 15:50

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).

sx2008 11. Nov 2012 18:12

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: Hier im Forum suchenDegToRad().
Funktionen sind essentiell zum Aufbau von Software.
Man schreibt also nicht immer wieder
Delphi-Quellcode:
winkel / 180 * pi
sondern man nimmt
Delphi-Quellcode:
DegToRad(winkel)
.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz