Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Winkel einer Linie durch 2 Punkte (https://www.delphipraxis.net/11832-winkel-einer-linie-durch-2-punkte.html)

Florian H 14. Nov 2003 14:14


Winkel einer Linie durch 2 Punkte
 
Hallo,

ich habe eine (gedachte) Linie durch 2 Punkte im Delphi-Koordinaten-System.
Wie kann ich nun den Winkel dieser Linie feststellen?

Beispiel:
Code:
x A = (0|0)
 \
  \
   \
    \
     \
      x B = (5|5)
 
  ==> Winkel = 90°
Die beiden Punkte A und B habe ich, können beliebig verteilt sein...wie kann ich jetzt den Winkel einer Geraden durch diese Punkte berechnen??

Bin leider erst 10.-Klässler und kenne daher von schulischem Wege noch keine Antwort :|


Viele Grüße
Florian

Florian H 14. Nov 2003 14:20

Re: Winkel einer Linie durch 2 Punkte
 
<< falsch >>

edit2: forensuche hilft, hab was gefunden, muss es nur noch umbauen :)

rebugger 14. Nov 2003 14:27

Re: Winkel einer Linie durch 2 Punkte
 
Winkel Alpha = Tangens (y/x)

Also bei deinem Beispiel:
tan (5/5) = tan 1

Sharky 14. Nov 2003 14:36

Re: Winkel einer Linie durch 2 Punkte
 
Zitat:

Zitat von Florian H
.... forensuche hilft, hab was gefunden, muss es nur noch umbauen :)


Ich finde es gut das Du doch noch auf die Suche-Funktion gestossen bist (geschieht leider zu selten in der letzte Zeit) und diese dir geholfen hat.

Eine Bitte habe ich noch: Markiere deine Frage bitte als "beantwortet" (Oben rechts im Thread). Danke :-D

himitsu 14. Nov 2003 14:41

Re: Winkel einer Linie durch 2 Punkte
 
- Winkel in Grad (-180° < Winkel <= 180°)
- 0° bei 3 Uhr
- entgegen dem Uhrzeigersinn
- Winkel der Linie von X1/X1 aus

Delphi-Quellcode:
  * (X1/Y1)
   \
    \
     \
      * (X2/Y2)


Uses Math;

Winkel := -ArcTan2(X2 - X1, Y2 - Y1) / Pi * 180;
@Florian H,
das sieht mir mehr nach einem 45er aus

Ich hoffe, ich hab nicht zu viel gelöscht.
Delphi-Quellcode:
Spielfeld.Winkel: Integer; {Winkel in Grad = Spielfeld.Winkel / 10}

Spielfeld.Winkel := Round(Round(ArcTan2(Y - Ceil(ClientWidth * 0.678), X - Trunc(ClientWidth * 0.8)) / Pi * 1800 + 900) mod 3600 / 150) * 150; {in 15°-Schritten}

Spielfeld.Winkel := Round(Round(ArcTan2(Y - Ceil(ClientWidth * 0.678), X - Trunc(ClientWidth * 0.8)) / Pi * 1800 + 900) mod 3600 / 50) * 50; {in 5°-Schritten}

Spielfeld.Winkel := Round(ArcTan2(Y - Ceil(ClientWidth * 0.678), X - Trunc(ClientWidth * 0.8)) / Pi * 1800 + 900) mod 3600;   {in 0,1°-Schritten}

Jens Schumann 14. Nov 2003 14:50

Re: Winkel einer Linie durch 2 Punkte
 
Hallo:
ich habe eine kleine Erweiterung vorgenommen:
Delphi-Quellcode:
x A = (0|0)
 |\ 
 | \ 
 |  \ 
 |   \ 
 |.  \ 
 |----- x B = (5|5)
 
  ==> Winkel = 90°
Der Punkt A hat die Koordinaten X1=0 und Y1=0
Der Punkt B hat die Koordinaten X1=5 und Y2=5
Der Tangens der Winkel berechnet sich:
Delphi-Quellcode:
(Y2-Y1)/(X2-X1)
Achtung: Wenn X1=X2 ist steht im Nenner 0. Das musst Du abfangen.
Mit arctan((Y2-Y1)/(X2-X1) erhälst Du den Winkel in Radiant. Wenn Grad verwenden möchtest muss Du das Ergebnis wie folgt umrechnen:
Delphi-Quellcode:
 Wr : Winkel in Radiant
         Wg : Winkel in Grad

Formel: Wg:=Wr*180/Pi

Weil es gilt: Pi entspricht 180° und Wr entspricht Wg
Daraus folgt: Pi/Wr=180/Wg
Fix umgestellt ergibt

Wg=Wr*180/Pi


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 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