Atan2
Übersicht

flexer94Betreff: Atan2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Leute,
ich hab mir jetzt schon zig Tutorials und Posts zum Thema angeschaut, ich kapiers aber einfach nicht. Wär jemand so freundlich und würde mir das erklären oder nen Link zu nem guten Tutorial posten? (Robsite kenn ich schon) Gruß flexer |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also.
Besser geht's nicht ![]() https://www.blitzforum.de/foru...711#346711 MFG |
||
flexer94 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm, ich glaube ich bin zu blöd...
Also, mir gehts darum, dass ich einfach Objekte im 2D Bereich schräg bewegen kann. Gibts da auch ne alternative? Gruß flexer |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was daran verstehst Du denn nicht? Wie ist denn gezielt deine Ausgangslage?
Vielleicht können wir dann besser helfen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
flexer94 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Kombination von Cosinus, Sinus, wie ich dass verwenden muss, damits klappt. | ||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] winkel = [[ATan2]](Differenz der Y-Koordinaten,Differenz der X-Koordinaten)
neueX = alteX+cos(winkel)*Geschwindigkeit neueY = alteY + sin(winkel)*Geschw. Wobei der Winkel zwischen 0 und 180° liegt (also 0°, 90°, 180°/-180°, -90°, 0°) Du solltest dir ein Textprogramm scheiben, was dir immer den aktuellen Winkel ausgibt. Probieren geht über studieren! MFG |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast ein Objekt an X/Y.
Dein Ziel ist TX/TY. Der Winkel zum Ziel ist: winkel = atan2(TY-Y,TX-X) Diesen Winkel kannst Du benutzen um dein Objekt Wandern zu lassen. Dafür: neuesX = x + Cos(winkel)*Schrittweite neuesy = y +sin(winkel)*schrittweite Schrittweite gibt an wie weit dein Objekt bei der Bewegung in Pixeln verschoben werden soll. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dazu brauchst du nichtmal Atan2. Atan2 brauchst du nur wenn du den Winkel zwischen zwei Punkten errechnen willst, also wenn z.B. sich ein Gegner auf die Spielfigur zubewegen soll.
Um ein Objekt in eine bestimmte Richtung zu bewegen, brauchst du nur Sin und Cos: Code: [AUSKLAPPEN] xspeed=Sin(winkel)*speed
yspeed=-Cos(winkel)*speed x=x+xspeed y=y+yspeed Atan2 wäre dann die Umkehrfunktion davon: Code: [AUSKLAPPEN] winkel=Atan2(xspeed, -yspeed)
MfG edit: ich war zu langsam |
||
1 ist ungefähr 3 |
flexer94 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok ich hab das jetzt soweit hinbekommen, leider bewegt sich der ball immer nur im kreis...
Außerdem weiß ich nicht genau was ich da gerade gemacht hab =/ Code: [AUSKLAPPEN] Graphics 800,600,32,0
SetBuffer BackBuffer() ball = LoadImage("testbob.png") bx = 400 by = 300 timer = CreateTimer(75) While Not KeyDown(1) Cls WaitTimer(timer) bx = MouseXSpeed() by = MouseYSpeed() Line MouseX(),MouseY(),500,500 winkel = ATan2(MouseX() - bx,ny - by) nx = bx + Cos(winkel)*20 ny = by + Sin(winkel)*20 Oval(nx,ny,20,20,1) Flip Wend |
||
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weis zwar nicht, was dein Programm tun sollte, aber so bewegt sich der Ball auf die Maus zu:
Code: [AUSKLAPPEN] bx = MouseX()
by = MouseY() winkel# = ATan2(bx-nx,by-ny) nx = nx + Sin(winkel)*10 ny = ny + Cos(winkel)*10 So bewegt er sich in die Richtung, in die der Strich zeigt: Code: [AUSKLAPPEN] bx = MouseX()
by = MouseY() winkel# = ATan2(bx-400,by-300) nx = nx + Sin(winkel)*10 ny = ny + Cos(winkel)*10 Line 400, 300, bx, by Oval nx,ny,20,20 Und so positioniert er sich immer vom Mittelpunkt aus in konstanter Entfernung Richtung Maus: Code: [AUSKLAPPEN] bx = MouseX()
by = MouseY() winkel# = ATan2(bx-400,by-300) nx = Sin(winkel)*200+400 ny = Cos(winkel)*200+300 |
||
1 ist ungefähr 3 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group