Probleme mit ATan2...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

juse4pro

Betreff: Probleme mit ATan2...

BeitragDi, Jan 27, 2009 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal...

Habe grade zutun mit Meinem Player, welcher sich zur Maus drehen soll, funktioniert auch alles nur nicht ganz so wie ich das will.

Ich benutze den Befehl Atan2...
Aber anscheinend kann ich diesen nicht mit Sin und Cos zusammen verwenden.

user posted image

ich möchte, dass mir die winkel so zurückgegeben werden, wie dies auf der grafik zusehen ist...

meine aktuelle berechnung sieht so aus:
Code: [AUSKLAPPEN]

p\direction# = ((ATan2(p\x - scroll_x - mouse_x, p\y - scroll_y - mouse_y) + 360) Mod 360)

...bla...

p\x = p\x + sin(p\direction)
p\y = p\y + cos(p\direction)


ich habe von ATan2 keine ahnung, irgendwie spiegelt dieser befehl den einheitskreis, oder sowas...

kann mir einer helfen?
Portfolio |LinkedIn |XING

Noobody

BeitragDi, Jan 27, 2009 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei Atan2 musst du zuerst die Y und dann die X - Komponente angeben, sonst kommt etwas falsches dabei raus.
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

juse4pro

BeitragDi, Jan 27, 2009 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Es heißt doch erst X Kathete und dann Y Kathete, oder?

Davon mal abgesehen, wenn ich das vertausche kommt immer noch was falsches raus, why?

EDIT:
Um genau zu sein, ist der Einheits kreis auf der Y achse gespiegelt
Portfolio |LinkedIn |XING

Noobody

BeitragDi, Jan 27, 2009 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann würde ich mal die Hilfe durchlesen, da heisst es relativ klar 'Atan2( Y#, X# )' Wink

Vielleicht hilft dir dieses kleine Beispiel auf die Sprünge: Code: [AUSKLAPPEN]
Graphics 800, 600, 0, 2
SetBuffer BackBuffer()

Timer = CreateTimer( 60 )

While Not KeyHit( 1 )
   Cls
   
   Angle# = ATan2( MouseY() - 300, MouseX() - 400 )
   
   Line 400, 300, 400 + Cos( Angle# )*100, 300 + Sin( Angle# )*100
   
   Flip 0
   WaitTimer Timer
Wend
End
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

juse4pro

BeitragDi, Jan 27, 2009 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
bei deinem beispiel kann der winkel aber ins minus gehen, das ich erst y, dann x brauche ist ok, das habe ich nun drin, funzt immer noch nicht

EDIT:
es muss ein winkel zwischen 0° u 360° sein da ich mit diesem winkel ein bild male.
Portfolio |LinkedIn |XING

tedy

BeitragDi, Jan 27, 2009 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
mach mod 360 dahinter
01010100 01100101 01000100 01111001 00100000 00111010 01000100

Noobody

BeitragDi, Jan 27, 2009 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If Angle# < 0 Then Angle# = Angle# + 360


Das ist aber wirklich elementar.
Warum es bei dir nicht funktioniert, kann ich nur vermuten - ein 'funzt immer noch nicht' ist halt nicht so aussagekräftig.
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

juse4pro

BeitragDi, Jan 27, 2009 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Och, stimmt ja, ich stand wohl auf'm schlauch, danke
Portfolio |LinkedIn |XING

D2006

Administrator

Betreff: Re: Probleme mit ATan2...

BeitragMi, Jan 28, 2009 9:38
Antworten mit Zitat
Benutzer-Profile anzeigen
mortus hat Folgendes geschrieben:
p\x = p\x + sin(p\direction)
p\y = p\y + cos(p\direction)


Cos für x und Sin für y, dann klappt's auch mit der Richtung. Wink
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

juse4pro

BeitragMi, Jan 28, 2009 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, ok, danke

und man muss -Sin schreiben wenn auf dem einheits kreis basiert, weil die y achse ja anders herum geht...

aber, danke an alle
Portfolio |LinkedIn |XING

tedy

BeitragMi, Jan 28, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
naja es geht ja um die länge der Kathete und nicht um die position
01010100 01100101 01000100 01111001 00100000 00111010 01000100

juse4pro

BeitragMi, Jan 28, 2009 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, aber ich brauche ja den winkel um später punkte zu berechnen... Wink

Jedenfalls funkitoniert es jetzt, danke Very Happy
Portfolio |LinkedIn |XING

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group