atan2
Übersicht

HahninatorBetreff: atan2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Winkel liegt dabei nicht zwischen 0° und 180°, sondern zwischen -90° und 90° ![]() 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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group