fehler mit atan2
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: fehler mit atan2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
warum habe ich den fehler
objekt is in der mitte platziert, des screens soll sich immer zu maus hin drehen und wenn ich mit der maus links oben bin steht das objekt links unten, ... code: Code: [AUSKLAPPEN] Function Fps:Int()
Global show:Int, counter:Int = MilliSecs(), count:Int If MilliSecs()-counter >= 1000 Then counter = MilliSecs() show = count count = 0 End If count :+ 1 Return show End Function Global WaitTime:Int = CreateTimer(100) Graphics 1024, 768, 1 SetMaskColor 255, 0, 255 Incbin "Ship000.bmp" Global Ship000:TImage = LoadImage("incbin::Ship000.bmp") MidHandleImage(Ship000) Repeat SetColor 0, 0, 0 Cls SetColor 255, 255, 255 DrawText Fps(), 0, 0 winkel = 360 - ATan2 (MouseY() - 768 / 2, MouseX() - 1024 / 2) SetRotation (winkel) DrawImage Ship000, 1024 / 2, 768 / 2 SetRotation (0) Flip WaitTimer WaitTime Until KeyDown(KEY_ESCAPE) End |
||
![]() |
Lastmayday |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
das Problem ist simpel: die X Y Achsen sind bei ATan2 vertauscht. BlitzMax: [AUSKLAPPEN] winkel = 180 - ATan2 (MouseX() - 1024 / 2, MouseY() - 768 / 2) ( +- 90 je nach zeigerichtung des Schiffes auf dem Bild ) mfg Lastmayday |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm... nein...?
Atan2(y, x) ist schon richtig. Die Frage ist - mit welchen Winkeln will man rechnen? Das gibt den mathematisch korrekten Winkel: BlitzMax: [AUSKLAPPEN] winkel = (-ATan2 (MouseY() - 768 / 2, MouseX() - 1024 / 2) + 360) Mod 360 Da bei der Rotation aber die Position im rechten, unteren Quadranten beachtet wird, muss da die Drehrichtung tauschen: BlitzMax: [AUSKLAPPEN] SetRotation (-winkel)
Insgesammt: BlitzMax: [AUSKLAPPEN] SuperStrict - Man kann die Negativen Vorzeichen auch beide Weglassen; es wird einem dann halt die (mathematisch) falschen Winkel angezeigt. Um die Verwirrung komplett zu machen muss man dann mit +sin Statt -sin rechnen... Und Mathias-Kwiatkowski: Gewöhne dir gleich mindestens Strict oder SuperStrict an - die Programme laufen schneller und du machst weniger Fehler. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group