AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Winkel von einer Position(x,y) aus berechnen.

Ein Thema von Mojito · begonnen am 11. Nov 2012 · letzter Beitrag vom 11. Nov 2012
Antwort Antwort
Mojito

Registriert seit: 29. Okt 2012
39 Beiträge
 
#1

Winkel von einer Position(x,y) aus berechnen.

  Alt 11. Nov 2012, 14:05
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;

Geändert von Mojito (11. Nov 2012 um 14:16 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Winkel von einer Position(x,y) aus berechnen.

  Alt 11. Nov 2012, 14:45
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...
Miniaturansicht angehängter Grafiken
winkel.png  

Geändert von Namenloser (11. Nov 2012 um 14:56 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Winkel von einer Position(x,y) aus berechnen.

  Alt 11. Nov 2012, 14:45
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Mojito

Registriert seit: 29. Okt 2012
39 Beiträge
 
#4

AW: Winkel von einer Position(x,y) aus berechnen.

  Alt 11. Nov 2012, 15:35
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
Miniaturansicht angehängter Grafiken
unbenannt.png  

Geändert von Mojito (11. Nov 2012 um 16:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Winkel von einer Position(x,y) aus berechnen.

  Alt 11. Nov 2012, 16:50
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).
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Winkel von einer Position(x,y) aus berechnen.

  Alt 11. Nov 2012, 19:12
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 winkel / 180 * pi sondern man nimmt DegToRad(winkel) .
  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 14:29 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