Winkel zweier Bilder zueinander anzeigen. 2D

Previous topic - Next topic

D2O

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
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

BumbleBee

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
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Kitty Hello

...das mach' ich nur immer zum Testen, ob die Befehle richtig laufen :P

x-tra

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.

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

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.

Schranz0r

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
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

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?

D2O

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

I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

x-tra

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.

Schranz0r

#10
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 .
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

mal eine frage am rande, was ist denn der unterschied zwischen ATAN und ATAN2?

x-tra

=bahnhof

atan hat doch bei glb auch zwei argumente.....!

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

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...