atan2

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Hahninator

Betreff: atan2

BeitragMi, Okt 07, 2009 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Morgen,

ich habe mal eine Frage zu atan2(). Wie funktioniert die Mathematik hinter diesen Befehlen?
Code: [AUSKLAPPEN]

winkel_tri = atan2(Mousex() - Pos_X, MouseY()- Pos_y)
pos_x = pos_x + sin(winkel_tri) * Geschwindigkeit
pos_y = pos_y + cos(winkel_tri) * Geschwindigkeit


Ich habe sin()/cos() wert mal in einem Kreis eingesetzt. Das Kreuz liegt immer auf der Linie, die den Kreis umschließt. Kann mir dies einer Erklären?
Code: [AUSKLAPPEN]

          Kreuz_x := round(sin(winkel_tri) * Durchmesser)+Mittelpunkt;
          Kreuz_y := round(cos(winkel_tri) * Durchmesser)+Mittelpunkt;


mfg Hahninator

orpheus_2003

BeitragMi, Okt 07, 2009 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt hier ein Programm welches den ATAN2 erklärt.
https://www.blitzforum.de/foru...light=atan
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de
 

Hahninator

BeitragMi, Okt 07, 2009 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Es gibt hier ein Programm welches den ATAN2 erklärt.
https://www.blitzforum.de/forum...light=atan


Danke für deine Antwort. Ich weiß wie ich mit atan2 umgehen muss. Mich interressiert mehr warum es so Funktioniert wie es Funktioniert

Jan_

Ehemaliger Admin

BeitragMi, Okt 07, 2009 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Atan 2 ist eine Erweiterung vom Arkustangens.

http://de.wikipedia.org/wiki/A...skotangens

Arkustangens ist die umkehroperation vom Tangens.

Da der Arkustangens nur 180 Grad kennt kannst du nicht auf dem Kreis liegen.
Deswegen fragt Atan 2 mit einer If-Abfrage noch ab, ob deine Werte Positiv oder Negativ sind -->
360 Grad.
between angels and insects

D2006

Administrator

BeitragMi, Okt 07, 2009 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ATan2 ist eine Modifikation von ATan. Während letzterens immer den kleinsten Winkel zurück gibt, der somit zwischen 0 und 180 Grad liegt, errechnet ATan2 welcher der beiden möglichen Winkel der richtige ist und kann somit den korrekten wieder geben (im Bereich von -180 bis 180°).
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Noobody

BeitragMi, Okt 07, 2009 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Winkel liegt dabei nicht zwischen 0° und 180°, sondern zwischen -90° und 90° Wink

Dein Umgang mit Atan2 ist ein wenig seltsam; er funktioniert natürlich auch, allerdings würde man das normalerweise so machen Code: [AUSKLAPPEN]

Winkel_tri = Atan2( MouseY()- Pos_y, Mousex() - Pos_X )
pos_x = pos_x + Cos( Winkel_tri ) * Geschwindigkeit
pos_y = pos_y - Sin( Winkel_tri ) * Geschwindigkeit


Wenn du in deinem Programm durchgehend deine Methode verwendest, wirst du natürlich auf keine Probleme stossen. Wenn du dann allerdings den Winkel an einen anderen Befehl weitergibst (z.B. RotateImage oder TurnEntity), müsstest du ihn jedesmal umrechnen, damit das Resultat dann wieder richtig herauskommt. Daher würde ich empfehlen, den Winkel wie oben gezeigt zu berechnen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group