GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2012-Aug-08

Title: falsche Winkel
Post by: WPShadow on 2012-Aug-08
Hi,

Ziel ist es, daß sich das Objekt (ownship.x, ownship.y) zur Maus (mx, my) hin bewegt. Dabei hole ich mir den Winkel (phi) zwischen den beiden.

Was ist hier falsch:

Code (glbasic) Select

pos_x = mx - ownship.x
pos_y = my - ownship.y

phi = ATAN(pos_y, pos_x)

move_x = (SIN(phi) * ownship.speed) * t
move_y = (COS(phi) * ownship.speed) * t

INC ownship.x, move_x
INC ownship.y, move_y


GLG

W.
Title: Re: falsche Winkel
Post by: backslider on 2012-Aug-08
Hi WPShadow,

Du kannst ja mal in meinem 2DEntitySystem gucken, wie ich es gelöst habe. ;)

http://www.glbasic.com/forum/index.php?topic=8242.0

Cheers
Title: Re: falsche Winkel
Post by: Poetronic on 2012-Aug-08
Kann man den Winkel zwischen Start- und zielkoordinate nicht wie folgt berechnen?

Code (glbasic) Select
winkel = ATAN(pos.y - mouse.y, pos.x - mouse.x)
Title: Re: falsche Winkel
Post by: WPShadow on 2012-Aug-09
Ok, einen Teil der Fehler habe ich raus gebracht, aber leider nicht alles...

Code (glbasic) Select


pos_x = mx - ownship.x
pos_y = my - ownship.y

phi = 360 + ATAN(pos_y, pos_x)

e_x = ABS(pos_x)
e_y = ABS(pos_y)



entfernung = SQR((e_x * e_x) + (e_y * e_y))

PRINT entfernung, 0, 20
PRINT phi, 0, 40


IF entfernung > 1
move_x = (COS(phi) * ownship.speed) * t
move_y = (SIN(phi) * ownship.speed) * t
ENDIF

INC ownship.x, move_x
INC ownship.y, move_y

ownship.x = INTEGER(ownship.x)
ownship.y = INTEGER(ownship.y)

Title: Re: falsche Winkel
Post by: backslider on 2012-Aug-09
Geht das hier nicht?
Code (glbasic) Select

//das hier mal umdrehen ganz oben?
pos_x = ownship.x - mx
pos_y = ownship.y - my
Title: Re: falsche Winkel
Post by: WPShadow on 2012-Aug-09
Nö, hat leider nichts gebracht!
Title: Re: falsche Winkel
Post by: backslider on 2012-Aug-09
Was genau willst Du denn jetzt überhaupt noch wissen?
Die Entfernung oder den Winkel zur Maus? :D
Title: Re: falsche Winkel
Post by: WPShadow on 2012-Aug-09
Mein Ziel ist es eine saubere Bewegung zur Maus hin zu bekommen. Komischerweise bewegt sich das Ganze aber nicht sauber.

Das ist eigentlich alles, was ich möchte...
Title: Re: falsche Winkel
Post by: Poetronic on 2012-Aug-09
Bitteschön!  :)

Code (glbasic) Select
GLOBAL x#=100
GLOBAL y#=100
GLOBAL angle#=0
GLOBAL speed#=2

GLOBAL mx#,my#,b1,b2

SETSCREEN 640,480,0

WHILE TRUE

PRINT mx,10,10
PRINT my,10,20

LimitMouse()

DRAWRECT mx,my,32,32,RGB(255,0,0) // Mouse#
DRAWRECT x,y,32,32,RGB(255,255,255) // Object

MoveObjectToMouse()

SHOWSCREEN

WEND

FUNCTION LimitMouse:
MOUSESTATE mx, my,b1, b2
IF mx<0 THEN mx=0
IF mx>640-32 THEN mx=640-32
IF my<0 THEN my=0
IF my>480-32 THEN my=480-32
SETMOUSE mx, my
ENDFUNCTION

FUNCTION MoveObjectToMouse:
angle = ATAN(my - y, mx - x)
x=x+COS(angle)*speed
y=y+SIN(angle)*speed
ENDFUNCTION


In Deinem Code müsste es dann wohl heißen:

Code (glbasic) Select
phi = ATAN(mouse_y - pos_y, mouse_x - pos_x)
Title: Re: falsche Winkel
Post by: WPShadow on 2012-Aug-09
Klasse, hat funktioniert! Danke sehr!

Irgendwo hatte ich einen Denkfehler drin...

Hauptsache es funktioniert!  :booze: Nochmals danke!!
Title: Re: falsche Winkel
Post by: Schranz0r on 2012-Aug-10
Quote from: WPShadow on 2012-Aug-09
Klasse, hat funktioniert! Danke sehr!

Irgendwo hatte ich einen Denkfehler drin...

Hauptsache es funktioniert!  :booze: Nochmals danke!!

*HUST* Wie so oft */HUST* :D
Title: Re: falsche Winkel
Post by: WPShadow on 2012-Aug-10
Hey,

du solltest am Besten wissen, daß ich nicht sonderlich gut bin... in... Mathe... tja... *hust*

Hab heute in Mathe auch vermutlich auch die Klausur versemmelt, also... Tja... Was soll ich sagen...  :giveup:

Title: Re: falsche Winkel
Post by: Schranz0r on 2012-Aug-10
Macht doch nix :)
Bin in Mathe mit SIN und COS und co auch net so wirklich gut !
Title: Re: falsche Winkel
Post by: backslider on 2012-Aug-10
Aber nur in Mathe!

in GLBasic bist du mit SIN und COS gut.  :good:
Title: Re: falsche Winkel
Post by: Schranz0r on 2012-Aug-10
Ich mach halt solange bis es geht :D
Title: Re: falsche Winkel
Post by: backslider on 2012-Aug-13
Das kenne ich nur zu gut.  :good:
Title: Re: falsche Winkel
Post by: WPShadow on 2012-Aug-13
Ich eigentlich auch, aber leider funktioniert das bei Mathe nicht. Da gibt es einen klassischen Ablauf:

1. Versuch: es funktioniert halbwegs
2. Versuch: es wird schlechter
3. Versuch: massiver Rechenfehler
4. Versuch: ich muß es auskommentieren, sonst bewegt sich da nichts mehr oder es landet außerhalb des Bildschirms
5. Versuch: wiederherstellen des ersten Versuchs...