GLBasic forum

Main forum => FAQ => Topic started by: D2O on 2007-Jan-27

Title: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: D2O on 2007-Jan-27
Hi,
wenn man wissen möchte aus welcher richtung ein Objekt kommt
ist ATAN() eine grosse Hilfe, nur muss man auch wissen wie man es einsetzt.
Hier ein kleines Beispiel:

Code (glbasic) Select
// --------------------------------- //
// Project: Atan
// Start: Saturday, January 27, 2007
// IDE Version: 4.051


// Zwei bilder erstellen und laden
DRAWRECT  0,0,32,32,RGB(0x80, 0xff, 0x80)
GRABSPRITE 0,0,0,32,32

BLACKSCREEN

DRAWRECT  0,0,32,32,RGB(0xfc, 0x83, 0xb6)
GRABSPRITE 1,0,0,32,32


//Mainschleife
WHILE TRUE
// Mouskoordinaten zuweisen
MOUSESTATE mx,my,b1,b2

// Bild 0 hat eine feste Koordinate
DRAWSPRITE 0,300,250
// Bild 1 hängt an der Mousekoordinate
DRAWSPRITE 1,mx,my

// Mod((Atan(yBild0 - yBild1,xBild0 -xBild1)+360),360) 
winkel =  MOD((ATAN(250-my,300-mx)+360),360)

// Linie zu den Eckpunkten zeichnen
DRAWLINE 300,250,mx,my,RGB(255,0,0)
// Den Winke ausgeben
PRINT winkel,mx+38,my


SHOWSCREEN
WEND
Title: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: BumbleBee on 2007-Jan-27
So was kann man immer brauchen.:good:

By the way

SAVESPRITE und LOADSPRITE brauchst du in deinem Beispiel nicht mehr.
Du erstellst und schnappst dir ja dein Sprite mit FILLRECT und GRABSPRITE.;)


Cheers
Title: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: Kitty Hello on 2007-Jan-28
...das mach' ich nur immer zum Testen, ob die Befehle richtig laufen :P
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-11
kann man das auch in 3D anwenden?
Und wenn ja wie, weil da ja nicht nur x und y, sondern auch z gegeben ist., was in meinem fall die blickrichtung ist.
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: Schranz0r on 2008-Jun-11
Ja musste halt umschreiben
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-11
ich hab davon nur leider keinen plan, sicher mit phi, oder?

will das aufs entity system anwenden.

kannst mir ja nen kleinen denkanstoss geben, damit ich das dann allein hinbekomme.

ich glaub ich muss mich mal richtig mit winkeln beschäftigen.
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: Schranz0r on 2008-Jun-11
Bin grad bei ein kleines Winkeltutorial zu schreiben, haben anscheined einige das Problem wie du :)
Fürs Programmieren sollte man halt immer gut in Mathe sein :P
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-11
is einfach schon zulange her, und naja ich hab mich früher immer um sin/cos/tan gedrückt, auch wenn ich damals wußte wie das geht.

war halt der meinung, dass ich das nicht brauchen werde, weil praktische anwendung war mir vor 10-12 jahren noch nicht wirklich klar.lol :S

und muss mich ja auch noch mit vektoren beschäftigen, da is ein beispiel in den samples unter /common/ , aber dort ist nix kommentiert, kann das wer erklären?
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: D2O on 2008-Jun-11
Hallo Heiko,

ich bin mir nicht sicher ob das so richtig ist, da ich von 3D so gut wie keinen Schimmer habe  ;/
aber ich Denke es wird hie schon so in diese richtung gehen.
Wenn das so passt, sollten die Ausgaben die Winkel vom Objekt zur Kammera sein ?

:offtopic: Wie zur Hölle lass ich den Quader auf die Kamera zu bewegen  :offtopic:

Code (glbasic) Select

CreateCube_no_texture( 1,0)


WHILE TRUE
   MOUSESTATE mx, my, b1 ,b2
   phi=mx*360 / 640

   X_MAKE3D 1,1000,45 // Viewport 3D

   X_CAMERA 0, 150, -300,      0 ,0 ,0
   
   
   X_AMBIENT_LT 0, RGB(255,255,0)

   X_MOVEMENT mx-230, my-230, 0
   
   
   X_SCALING 3, 3, 3
   X_ROTATION phi*3, 0, 1, 0
   X_DRAWOBJ 1, 0

// // Mod((Atan(yBild0 - yBild1,xBild0 -xBild1)+360),360)
winkel_xy_achse =  MOD((ATAN(0-150,mx-230-0)+360),360)
winkel_xz_achse =  MOD((ATAN(0-0,-300 - 0)+360),360)
winkel_yz_achse =  MOD((ATAN(150-my-230,-300 - 0)+360),360)

X_MAKE2D

PRINT winkel_xy_achse,10,10
PRINT winkel_xz_achse,10,30
PRINT winkel_yz_achse,10,50


   SHOWSCREEN   
WEND

Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-11
schau mal bei 3d code snippets, meine funktion hat noch fehler da, dürfte aber dein problem lösen, und du hast scheinbar mehr ahnung von winkelberechnungen, kannst ja mal schauen.

du könntest wenn es funktioniert den cube an der camera ausrichten und nur noch geradeaus bewegen lassen.
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: Schranz0r on 2008-Jun-11
In 3D gibts nur 2 Winkel  :noggin:

XY und XZ  :whistle:


Quote from: D²O on 2008-Jun-11
:offtopic: Wie zur Hölle lass ich den Quader auf die Kamera zu bewegen  :offtopic:

X_Movement mit Cos, Sin , Sin glaub war das aber nagel mich jetzt nicht fest :D
Schau mal in die Codeschnipsel, da hab ich ja eine Cam gemacht, das sollte dir evtl helfen .
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-12
mal eine frage am rande, was ist denn der unterschied zwischen ATAN und ATAN2?
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-12
=bahnhof

atan hat doch bei glb auch zwei argumente.....!
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: Schranz0r on 2008-Jun-12
Pures Mathe Heiko  :booze:
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-12
ich weiß, so ein bisschen steig ich inzwischen durch, bzw. fällt mir wieder ein.

Kannst du mal bei den 3D schnippseln schaun, dort kann doch nicht alles falsch sein, dass sich meine camera immer um Z im kreis dreht, egal was ich mach.

Das muss entweder an mir oder an dem ES liegen.grübel...
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: BumbleBee on 2008-Jun-12
 :offtopic:
Quote from: Heiko
Das muss entweder an mir oder an dem ES liegen.grübel...

Geh doch einfach weg von dem ES. Ich glaub da kommst du schneller voran und kannst dich auch voll auf dein Spiel konzentrieren. Aber viel Geduld hast du, dass muß man dir lassen. Ich glaube da hätte so manch anderer vorher das Handtuch geworfen wenn's nicht so funktioniert. :)

Cheers
Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: x-tra on 2008-Jun-12
Danke dir, aber ich will das ES etablieren, um es für alle nutzbar zu machen.

Ich könnte das Ganze auch in Cobra oder BM machen, aber mich wurmt das, weil ich nicht verstehe was ich da so gravierendes falsch mache.

Außerdem lerne ich dazu noch, wie das Ganze funktioniert, beschäftige mich mittlerweile schon ein wenig mit Vektoren und Matrizen.

Hoffe Gernot ist bald mal wieder online, denn ich denke er weiß sicher, was da bei mir schief läuft.

Title: Re: Winkel zweier Bilder zueinander anzeigen. 2D
Post by: Schranz0r on 2008-Jun-12
Leute das ist ein Faqforum kein Diskusionsboard!
Wenn ihr fragen dazu habt, macht bitte im GLBasic - de einen Thread auf !
Danke.