Cos() und Sin() Problem!

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

Neue Antwort erstellen

 

Blitzkrieg Bop

BeitragDo, Apr 08, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ok stimmt....gut....nunm uss nur noch diese kleiner zuckler beseitigt werden
~ Hey Ho Let's Go ~
 

Dreamora

BeitragDo, Apr 08, 2004 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
klingt für mich als ob es daher käme dass du die winkel als integer statt float deklariert hast

Hubsi

BeitragDo, Apr 08, 2004 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Das zuckelt komischerweise auch wenn einfach geradeaus fährt (winkel=0). Da weiß ich auch nicht mehr weiter.
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()


Global hoch=200,runter=208,links=203,rechts=205,x#=400,y#=400 ; x und y => Float
Global speed# = 2 ; Zu Float gemacht
winkel=90

Dim image(359)
image(0) = LoadImage("kanone.PNG")
MidHandle image(0)
RotateImage image(0),270 ; Gedreht
For a  =1 To 359
 image(a) = CopyImage(image(0))
 MidHandle image(a)
RotateImage(image(a),a)
Next



Repeat
Cls

DrawImage image(winkel),x,y

If KeyDown(rechts)
   winkel = winkel + 1
EndIf

If KeyDown(links)
   winkel = winkel - 1
EndIf
;wenn winkel < 0 winkel = 359 und umgekehrt:
If winkel < 0 winkel = 359 ; ausgebessert
If winkel > 359 winkel = 0 ; ausgebessert

If KeyDown(hoch)
   x = x - Cos(Float(winkel))*speed
   y = y - Sin(Float(winkel))*speed
EndIf     
If KeyDown(runter)
   x = x + Cos(Float(winkel))*speed
   y = y + Sin(Float(winkel))*speed
EndIf


If KeyHit(1) Exit
Text 10,10,"Aktueller Winkel:"+winkel

;damit das Objekt an einer anderen Seite rauskommt:
If x < - 21 ;links >> rechts
x = 810
EndIf 
If x > 810 ;rechts >> links
x = - 21
EndIf
If y > 610 ;unten >> oben
y = - 60
EndIf
If y < -60 ;oben >> unten
y = 610
EndIf

Flip
Forever
End
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Dreamora

BeitragDo, Apr 08, 2004 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
jo weil der winkel wie gesagt in Integer is und damit immer wieder gerundet wird wenn er daneben is. nebenher is deine wrappingfunktion falsch für winkel > 359 bzw. < 0

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()


Global hoch=200,runter=208,links=203,rechts=205,x#=400,y#=400 ; x und y => Float
Global speed# = 2 ; Zu Float gemacht
winkel#=90.0

Dim image(359)
image(0) = LoadImage("kanone.PNG")
MidHandle image(0)
RotateImage image(0),270 ; Gedreht
For a  =1 To 359
 image(a) = CopyImage(image(0))
 MidHandle image(a)
RotateImage(image(a),a)
Next



Repeat
Cls

DrawImage image(winkel),x,y

If KeyDown(rechts)
   winkel = winkel + 1.0
EndIf

If KeyDown(links)
   winkel = winkel - 1.0
EndIf
;wenn winkel < 0 winkel = 359 und umgekehrt:
If winkel <= 0.0 winkel = winkel + 360 ; ausgebessert
If winkel >= 360.0 winkel = winkel - 360 ; ausgebessert

If KeyDown(hoch)
   x = x - Cos(Float(winkel))*speed
   y = y - Sin(Float(winkel))*speed
EndIf     
If KeyDown(runter)
   x = x + Cos(Float(winkel))*speed
   y = y + Sin(Float(winkel))*speed
EndIf


If KeyHit(1) Exit
Text 10,10,"Aktueller Winkel:"+winkel

;damit das Objekt an einer anderen Seite rauskommt:
If x < - 21 ;links >> rechts
x = 810
EndIf
If x > 810 ;rechts >> links
x = - 21
EndIf
If y > 610 ;unten >> oben
y = - 60
EndIf
If y < -60 ;oben >> unten
y = 610
EndIf

Flip
Forever
End
  • Zuletzt bearbeitet von Dreamora am Do, Apr 08, 2004 22:20, insgesamt 3-mal bearbeitet

Hubsi

BeitragDo, Apr 08, 2004 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach kein Quatsch Smile image(winkel) ist nur auf 359 dimensioniert. Willst Du meinen Rechner absaufen lassen Very Happy
Aber mal abgesehen davon, was ist daran jetzt besser? (Ich meine nicht die Float-Sache)
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
  • Zuletzt bearbeitet von Hubsi am Do, Apr 08, 2004 21:41, insgesamt einmal bearbeitet
 

Dreamora

BeitragDo, Apr 08, 2004 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
muss ich dich enttäuschen.

RotateImage hat angle# 0 bis 360
 

Blitzkrieg Bop

BeitragDo, Apr 08, 2004 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
also das ruckelt immer noch oder nicht
~ Hey Ho Let's Go ~

Hubsi

BeitragDo, Apr 08, 2004 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist klar, aber es ist doch sinnfrei RotateImage mit 0 oder 360 Grad auszuführen? Belehrt mich eines besseren, bis jetzt halte ich das für gequirlten Bullshit Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Dreamora

BeitragDo, Apr 08, 2004 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Du redest blödsinn, jo da haste recht.

Ich führe keine Rotationen mit den Winkeln durch sondern wrappe sie an den grenzen.

Rotation 0 = rotation 360
sprich zurücksetzen auf ausgangrichtung.

und wenn du durchgehend auf rechts drückst wirst du automatisch auf 0 bzw. 360 kommen.

Hubsi

BeitragDo, Apr 08, 2004 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das meine ich: Das 0 Grad-Bild ist doch haarklein dasselbe wie das 360 Grad-Bild. Also stelle ich den Winkel wenn er 359 überschreitet wieder auf 0 zurück. In Deinem Code wird der Winkel aber erst bei größer 360 zurückgestellt Question
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Dreamora

BeitragDo, Apr 08, 2004 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
bei >= ( habs editiert )

und auf 0 setzen ist falsch!

zudem muss der winkel min. 360 sein sonst beginnts eben zu zuckeln wie du ja gemerkt hast. und auf 0 stellen is ebenso falsch sondern winkel - 360

naja jetzt sollte der code funzen und nimmer zuckeln
 

Blitzkrieg Bop

BeitragDo, Apr 08, 2004 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du den ganzen code nochmal posten?
~ Hey Ho Let's Go ~

Hubsi

BeitragDo, Apr 08, 2004 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Steht doch oben. Mußt nur den kleinen Bug mit den -36.0 nach +360.0 ausbessern.
@Dreamora: Jo, jetzt hab ich das gerafft, lernt man doch nie aus Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Dreamora

BeitragDo, Apr 08, 2004 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
args sorry wegen dem fehler
hab den code nochma editiert jetzt stimmt er Sad
 

Blitzkrieg Bop

BeitragDo, Apr 08, 2004 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
das muss aber os heißen oder.

Code: [AUSKLAPPEN]

If winkel <= 0.0 winkel = winkel + 360.0


sonst: array index out of bounds
~ Hey Ho Let's Go ~
 

Dreamora

BeitragDo, Apr 08, 2004 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
so ein müll Sad
Ich trett glei den source ... hat man davon dass man ne fehlerhafte funktion ebenfalls fehlerhaft umschreibt ...

Hubsi

BeitragDo, Apr 08, 2004 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Please ignore this Embarassed
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
  • Zuletzt bearbeitet von Hubsi am Do, Apr 08, 2004 22:21, insgesamt einmal bearbeitet
 

Dreamora

BeitragDo, Apr 08, 2004 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
habs jetzt nochma angepasst und ich hoffe dieses mal wirklich das letzte mal ...


[EDIT]

wozu speichert ihr das eigentlich genau in ein Array?? das is nutzlose speicherverschwendung die es garnicht braucht.
Der Rotate Imagebefehl is ja net aus Jux da

Hubsi

BeitragDo, Apr 08, 2004 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast Du RotateImage schon mal Realtime versucht? Viel Spaß noch Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Dreamora

BeitragDo, Apr 08, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
args der blurt das bild ... kein wunder wird das so tödlich langsam.

ok nix gesagt deswegen Smile

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group