GetAngleByCords - Geht das besser? [Ja - Gelöst]

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Kernle 32DLL

Betreff: GetAngleByCords - Geht das besser? [Ja - Gelöst]

BeitragDo, Aug 20, 2009 9:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho,

Für ein Projekt habe ich mir eine kleine Funktion geschrieben, die mit den Winkel zwischen 2 Punkten zurück gibt. Das ganze ist aber aus meiner Sicht ziemlich unsauber, und ich wollte Fragen ob das nicht irgendwie elleganter geht (vor allem das ich die Winkel mit 180 und 360 ggf. "nachkorrigieren" muss).

https://www.blitzforum.de/uplo...?show=1704
(Die Eigenkorrektur mündet daher das bei der "ElseIf Not (StartX - PointX)" Gabelung die < und > vertauscht waren)

Gute Testwerte sind folgende:

Start: 0,0 // Punkt: 0,0 -> 0°
Start: 0,0 // Punkt: 10,10 -> 45°
Start: 0,0 // Punkt: 10,-10 -> 135°
Start: 0,0 // Punkt: -10,-10 -> 225°
Start: 0,0 // Punkt: -10,10 -> 315°

So long,
Kernle
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009
  • Zuletzt bearbeitet von Kernle 32DLL am Do, Aug 20, 2009 14:37, insgesamt einmal bearbeitet

Moep

BeitragDo, Aug 20, 2009 9:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal atan2(..) an und such im Forum ^^, das gabs hier glaub ich schon ein paar male.

Kann dir aber jetzt schon sagen, dass es viel simpler geht Razz
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Xeres

Moderator

BeitragDo, Aug 20, 2009 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher das die Ergebnisse für 10,-10 und -10,10 nicht vertauscht sind?
Ich nehme an, so ginge es dann kürzer:

BlitzMax: [AUSKLAPPEN]
SuperStrict

Print("0,0 // 0,0 -> " + GetAngleByCords(0, 0, 0, 0))
Print("0,0 // 10,10 -> " + GetAngleByCords(0, 0, 10, 10))
Print("0,0 // 10,-10 -> " + GetAngleByCords(0, 0, 10, - 10))
Print("0,0 // -10,-10 -> " + GetAngleByCords(0, 0, - 10, - 10))
Print("0,0 // -10,10 -> " + GetAngleByCords(0, 0, - 10, 10))

Function GetAngleByCords:Int(X1:Float, Y1:Float, X2:Float, Y2:Float)
Return (ATan2(Y2 - Y1, X2 - X1) + 360) Mod 360
End Function
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Kernle 32DLL

BeitragDo, Aug 20, 2009 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres: Nope , die Werte sind so richtig, schau dir mal diese Grafik an:

user posted image

@Moep: Hmm, ATan2 habe ich schon öfters gehört.. ich suche mal danach.

So long,
Kernle
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Xeres

Moderator

BeitragDo, Aug 20, 2009 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht aus, als hättest du das normale Koordinatensystem gedreht und gespiegelt. Normalerweise liegt die 0° Linie nach +x, nicht nach +y und der Winkel nimmt entgegen dem Uhrzeigersinn zu, nicht mit ihm.
Wenn das aus irgendeinem Grund sinnig für dich ist, kannst du das ja gern so machen, du musst das dann aber bei jeder Berechnung beachten.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Kernle 32DLL

BeitragDo, Aug 20, 2009 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh verdammt, das habe ich ja total verbockt, du hast natürlich recht...
Ja dann hat sich das auch erledigt, danke für die Hilfe

So long,
Kernle
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group