Sinuskurve klappt nicht!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Omitheuser

Betreff: Sinuskurve klappt nicht!

BeitragDi, Apr 20, 2004 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Um mich bei meinem ersten theard schnell mal vorzustellen...
Ich bin timo 17 Jahre alt Schüler am Fachgymnasium in Lehrte und will jetzt mal nen bischen in BB proggen!
Also ich mich hingesetzt und versucht ne Sinuskurve zu erzeugen... und ich weis nicht wie es geht! Thema liegt weit zurück und da kommt auch was ganz komisches raus!
Code: [AUSKLAPPEN]
Graphics 800,600,16

kugel =LoadImage ("Kugel.bmp")
MaskImage (kugel,255,0,255)
Repeat
V0 =10
g = 10
a = 40
If KeyHit (28) Then t=t+1
X = V0*t*Cos(a)
Y = 600+v0*t*Sin(a)-g/2*t^2
DrawImage kugel,x,y
If KeyHit (1) Then b = 1
Flip
Forever

Vieleicht kann mir da wer helfen! Wäre echt nett!
Off-Topic: Cooles Forum hier richtig was Los!

Bis denne!
Omit
Für Fehler und Schrieft haftet der Stieft!
 

Ava

Gast

BeitragDi, Apr 20, 2004 19:36
Antworten mit Zitat
Code: [AUSKLAPPEN]
Graphics 800, 600, 16, 2
SetBuffer BackBuffer()

amp = 60
frq# = 1

Repeat
Cls
For x = 0 To GraphicsWidth() - 1
   Plot x, GraphicsHeight()/2 - Sin(x*frq) * amp
Next
If KeyDown(208) Then amp = amp + 1
If KeyDown(200) Then amp = amp - 1
If KeyDown(203) Then frq = frq + .1
If KeyDown(205) Then frq = frq - .1
Flip
Until KeyHit(1)

Vielleicht hilft Dir das irgendwie 'n bissel weiter?! Confused
 

Omitheuser

BeitragDi, Apr 20, 2004 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider nicht...
Trotzdem danke!
Vieleicht kennt wer dieses Artelerie spiel vom Amiga?
Sowas will ich Clonen! In etwa das Wolknäuelwar nur viel einfacher!
Dafür wollte ich die Funktion machen um nacher einfach nur noch den Winkel und die Geschwindigkeit zu verändern!
Nur ich schaffs einfach nicht obwohl ich keiner bin der so schnell aufgibt!

Danke nochmal!
Für Fehler und Schrieft haftet der Stieft!
 

Dreamora

BeitragDi, Apr 20, 2004 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Floatwerte für die Position wird da häufig garnix rauskommen da du ja alle Werte als integer hattest Smile

Wozu du allerdings V0 und so innerhalb der Loop definierst versteh ich noch net ganz Wink
Ansonsten gute Verwendung der trockenen Physikstunde Wink

Code: [AUSKLAPPEN]


Graphics 800,600,16

kugel =LoadImage ("Kugel.bmp")
MaskImage (kugel,255,0,255)
V0# =10
g# = 10
a# = 40

Repeat

If KeyHit (28) Then t#=t+1
x# = V0*t*Cos(a)
y# = 600+v0*t*Sin(a)-g/2*t^2
DrawImage kugel,int(x), int(y)
If KeyHit (1) Then b = 1   ; wäre then end net einfacher gewesen? ;)
Flip
Forever



Hoffe das funzt so
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Omitheuser

BeitragDi, Apr 20, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja wäre es!...
Ne leider muss in meiner kleinen Physik welt irgendwas falsch sein...
es ergibt keine Sinuskurve...warum auch immer??
Aber trotzdem Danke für eure Hilfe...!
Wenn irgendwer ne Lösung hat...?!

cya
Für Fehler und Schrieft haftet der Stieft!
 

Dreamora

BeitragDi, Apr 20, 2004 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
nö nach oben wird der ball definitiv nicht gehen. mit nem speed von 10 und ner grav von 10 wird der direkt mal nach unten fallen ... und mit ner startkoordinate von 600 wird er schon fast ganz unten sein, da koordinaten von links oben aus gemessen werden nach rechts und unten.


jopp die alternative is aus V0 vx und vy zu errechnen ( dabei gehe ich von einem Zeitunterschied von t = 1 aus )

V0 = 300
a = 40
vx# = V0 * cos(a)
vy#= V0 * sin(a)
ay = -10

x= 0
y= 100

repeat

vy = vy + ay
x = x + vx
y = y + vy
DrawImage Kugel, x, y
flip
forever
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Omitheuser

BeitragDi, Apr 20, 2004 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja das Problem! Die Kugel geht ja nach oben!
Es muss ein Formel technisches Problem sein!
Kann es sein das ich diese Formel für die Wurfbahn brauche?

Y= -g/(2*v0*cos^2a)*X^2+(tan a)*x ?

Ich kann die Formel nur leider nicht in Blitbasic einfügen!
Ich weis leider auch nicht mehr wofür die Formel ist weil ich meine Unterlagen so schlampig führe und da sage noch mal wer den scheiß den man in der Schule lernt braucht man nicht mehr...LOL!

Aber trotdem danke für deine Hilfe!
Für Fehler und Schrieft haftet der Stieft!
 

Dreamora

BeitragDi, Apr 20, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist die Bahngleichung beim schiefen Wurf unter abwurfwurfwinkel a gibt sie dir die Y Position die zur angegebenen X position gehört.


Die zugehörige Blitzfunktion wäre
x# = 0.0
y# = 0.0
y= -g/(2*v0*cos(a)*cos(a))*x*x+(tan a)*x


welche Formel du allerdings nimmst sollte dabei nicht mal so einen unterschied machen. Speziell da du für die Bahngleichung eine Variante nehmen müsstest die meinem alternativcode sehr ähnlich ist.


Wenn du willst dass die Kugel nach unten fliegt musst du übrigens für g -10 nehmen da ja das Koordsystem als X = rechts Y = aufwärts angenommen wird für die Formel und es in Blitz ja x = rechts y = abwärts definiert is Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Di, Apr 20, 2004 21:23, insgesamt einmal bearbeitet
 

Ava

Gast

BeitragDi, Apr 20, 2004 21:08
Antworten mit Zitat
Ahsooo, DAS war also Dein Ziel! Sag das doch gleich! *gg*
Ich hab mal ne alte Formel von mir rausgekramt, schidde böhn:Code: [AUSKLAPPEN]
 --------------------------------------------------------------------------------------------------------------------------------------
;   errechnen einer Wurfparabel  /  horizontale Position
; --------------------------------------------------------------------------------------------------------------------------------------

Function   parabelCurve_x#(x#, yaw#, velocity#, time#)

   Return   x# + ((time# * Cos(yaw#) * velocity#))

End Function


; --------------------------------------------------------------------------------------------------------------------------------------
;   errechnen einer Wurfparabel  /  vertikale Position
; --------------------------------------------------------------------------------------------------------------------------------------


Function   parabelCurve_y#(y#, yaw#, velocity#, time#)

   Local   gravity#   =   0.981
   Return   y# + ((time# * Sin(yaw#) * velocity#)) - (gravity# * (time# ^ 2.0))
   
End Function

Travis

BeitragMi, Apr 21, 2004 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Ava
Diese Sache würde mich auch mal interessieren, weil ich mal was ähnliches machen wollte. Ich verstehe aber nicht, wie ich die Funktionen anwenden soll. So wie ich mir das dachte funktioniert es irgendwie nicht:

Code: [AUSKLAPPEN]

x = 0: y = 500

Graphics 800,600,16,2
SetBuffer BackBuffer()
Repeat
Cls

x = ParabelCurve_x#(x,2,1,.9)
y = ParabelCurve_y#(y,2,1,.9)

Text 0,0, "X:" + x
Text 0,10, "Y:" + y

Oval  x,y,10,10

Flip
Until KeyHit(1)
End
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Triton

BeitragMi, Apr 21, 2004 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hm? Parabel-x und parabel-x?

Normalerweise läuft das in Mathe so:

Code: [AUSKLAPPEN]

For x = 0 to 100
          plot x,parabely(x)
next


Es geht doch um die Abarbeitung des jeweiligen Abschnitts, daher läuft das wie ne normale funktion f(x) wobei man einfach das linear steigende (oder fallende) x übergibt und daraus y berechnet wird (natürlich in dem Fall noch mit gravitation etc.).

Travis

BeitragMi, Apr 21, 2004 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Triton

Ich verstehe, was du meinst. Ich hab leider keine große Ahnung von solchen Berechnungen, das blieb mir als Realschüler immer erspart.

Ich habe das mal versucht so umzusetzen, wie du es beschrieben hast, aber die Flugbahn ist immer linear.

EDIT: Hier habe ich bei Time jetzt immer einen konstanten Wert eingegeben. Ist das vielleicht der Fehler? Ich habe schon damit herumexperimentiert, konnte aber nichts herausfinden.

Code: [AUSKLAPPEN]

Graphics 600,600,16,2
SetBuffer BackBuffer()

For x = 0 To 600
 Cls

 Line 0,0,600,600

  y# =  ParabelCurve_Y#(x,10,20,1)

  Text 200,10, y#, 10, 10

  Oval x, y#, 10, 10

 If KeyHit(1) Then End
 Flip
Next
End

;--------------------------------------------------------------------------------------------------------------------------------------
; errechnen einer Wurfparabel / horizontale Position
; --------------------------------------------------------------------------------------------------------------------------------------

Function parabelCurve_x#(x#, yaw#, velocity#, time#)

Return x# + ((time# * Cos(yaw#) * velocity#))

End Function


; --------------------------------------------------------------------------------------------------------------------------------------
; errechnen einer Wurfparabel / vertikale Position
; --------------------------------------------------------------------------------------------------------------------------------------


Function parabelCurve_y#(y#, yaw#, velocity#, time#)

Local gravity# = 0.981
Return y# + ((time# * Sin(yaw#) * velocity#)) - (gravity# * (time# ^ 2.0))

End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Omitheuser

BeitragMi, Apr 21, 2004 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Sie froh das du son scheiß nicht in der Schule machen musstest!
Die Formelist ja auch leider Falsch!
Er hat die Formel nur in eine Funktion gepackt da ändert sich leider nix!
Es muss doch noch die Wurfbahn berrechnet werden!
http://www.walter-fendt.de/ph11d/wurf.htm
Hier ist auf jeden Fall mal ein Beispiel ich werd mich nachher noch mal dransetzen!

Cya!
Für Fehler und Schrieft haftet der Stieft!

regaa

BeitragMi, Apr 21, 2004 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Travis hat Folgendes geschrieben:
Ich verstehe, was du meinst. Ich hab leider keine große Ahnung von solchen Berechnungen, das blieb mir als Realschüler immer erspart.


Dann hattest du einfach eine schlechte Schule. Denn ich als Realschüler, hatte mir sowas viel zu tun.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

Omitheuser

BeitragMi, Apr 21, 2004 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mich jetzt nochmal dran gesetzt, aber zu keinem ergebnis gekommen! Die Kugel steigt zwar nur fällt sie nicht wieder runter oder in ganz komischen Formen! Wie kann das sein?
Vieleicht liegt das an den Timer +1! Vieleicht muss man eine referenz zeit haben! Irnanie hat doch sowas schon mal geschriebn! Kann er nicht einmal sein kommentar dazu abgeben?

Cya!
Für Fehler und Schrieft haftet der Stieft!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group