Atan2 Demo

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

walski

Ehemaliger Admin

Betreff: Atan2 Demo

BeitragSo, Jan 25, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab grade für Tobi ne kleine Demo des Atan2 Befehls gecodet.
Und auf einma war er nicht mehr im Chat Evil or Very Mad
Naja, dann stell ich halt hier her. Bitte nicht über die Kommentare etc wundern war eben auf Tobi zugeschnitten Wink
Und ja, ich weiß nicht weltbewegend aber vielleicht für Neulinge ganz interessant.
Achja, wer meine Umrechnungsformel vereinfachen möchte: Nur zu!

BlitzBasic: [AUSKLAPPEN]

;just a tiny Atan2 Demo
; (c) 2004 by walski

Const screenmode_fullscreen = 1,screenmode_windowed = 2
Const screen_width = 800, screen_height = 600, screen_depth = 32, screen_mode = screenmode_fullscreen
Const PlayerX = screen_width/2-13,PlayerY = screen_height/2-13
Graphics screen_width,screen_height,screen_depth,screen_mode

;Ein Bild das eben alle 5 Grad eine Linie hat die in die Richtung dieses Winkels zeigt
;Bitte beachten 0° = diese (->) Richtung nicht diese (^)!!

TempImage = CreateImage(25,25,73)
For i=0 To 72
SetBuffer ImageBuffer(TempImage,i)
Line 13,13,13+Cos(i*5)*12,13+Sin(i*5)*12
Next

SetBuffer BackBuffer()
Color 255,0,0

While Not KeyHit(1)
Cls
;Maus Koordinaten zwischenspeichern
mX = MouseX()
mY = MouseY()
;Einen Kreis und eine Linie Zeichnen zur besseren Orientierung und zur Kontrolle der unteren Funktion
Oval playerx-46,playery-46,91,91,0
Line mx,my,playerx,playery

;Erstmaliges aufrufen der Atan2 Funktion
CurDegree=ATan2(mX-PlayerX,mY-PlayerY)
;Umrechnen des Wertes in einen der stimmt Wink Glaub mir einfach, dass es so geht!
If CurDegree>0 Then
CurDegree = 90 - CurDegree
If CurDegree<0 Then
CurDegree = CurDegree + 360
EndIf
Else
CurDegree = (CurDegree *-1) + 90
EndIf
;Hier wird der Winkel dann durch 5 geteilt und zur Sicherheit nochma \"modulo 72\" gerechnet, damit auch ein gescheiter Frame draus wird. Du erinnerst dich? Wir haben oben ein Bild mit 73 (360/5 und Frame 0) Frames.
CurDegree = (CurDegree / 5)Mod 72

;Debug Anzeige:
Text 1,1,\"Momentaner Winkel: \" + Str(CurDegree*5)
Text 1,20,\"Momentaner Frame (Winkel/5): \" + Str(CurDegree)
;Zeichnen des Images
DrawImage TempImage,PlayerX-13,PlayerY-13,CurDegree
;und ein kleiner Mauscursor
Plot mX,mY
Flip
Wend


walski
buh!
 

CodeMaster

BeitragSo, Jan 25, 2004 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja also es geht tatsächlich noch einfacher, und zwar in einer einzigen Zeile. Hier ein simples Beispiel:BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()

While Not KeyDown(1)
Cls
Color 255,0,0
Oval 320-50,240-50,100,100,0
Line 320,240,MouseX(),MouseY()
Color 255,255,255
Winkel = (450-ATan2(MouseX()-320,MouseY()-240)) Mod 360
Line 320,240,320+Cos(Winkel)*20,240+Sin(Winkel)*20
Text 1,1,Winkel
Flip
Wend
End


[EDIT] Jetzt sogar noch kürzer: statt "90-...+360" direkt "450-..." *lol*
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
  • Zuletzt bearbeitet von CodeMaster am So, Jan 25, 2004 21:59, insgesamt einmal bearbeitet
 

walski

Ehemaliger Admin

BeitragSo, Jan 25, 2004 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
O.k. cool.
Danke CodeMaster, dieser Zusammenhang wurde mir aus reinem ausprobieren nicht sofort klar Wink
Dadurch wird das ganze sicher auch noch ne ganze Ecke fixer.

walski
buh!

Tobchen

BeitragMo, Jan 26, 2004 9:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Leute. Zwar hätte es auch einem PM getan, aber wird für Neulinge wirklich interesssant sein.

P.S.: Im Chat war ich nicht mehr, weil meine Eltern meine Herren sind und ich ihnen gehorschen muss, wenn der PC ausgeschaltet werden soll...
Tobchen - die Welt von Tobi!

ComNik

Betreff: DANKE!!!

BeitragSa, Feb 28, 2009 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, danke danke !!!!!!!
Genau das was Ich gesucht habe schön zusammengefasst!!! Very Happy

coolo

BeitragSa, Feb 28, 2009 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weißt schon, dass du einen 5 Jahre alten Theard herraufgepusht hast? Außerdem, hätte ein kleines Credit im Spiel gereicht...

Das ist ja schon Leichenschändung...
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group