Physik:Der Schiefe Wurf als Pc Diagramm

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Sven1234(2)

Betreff: Physik:Der Schiefe Wurf als Pc Diagramm

BeitragSa, Okt 16, 2004 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun ich habe mal mein Physikbuch zu Rate gezogen um diese zu programmieren,allerdings funktioniert der Code so nicht an was liegt das, wenn man die Zahlen eingibt funtzt es nicht warum.
Code: [AUSKLAPPEN]

Graphics 640,480,0,1
V0=Input("Geschwindikeit:")
P0=Input("Winkel:")
G=Input("Fallbeschleunigung:")
H=Input("Abwurfhöhe:")
D=Input("Zeitschritt:")
Cls
While Not KeyDown(1)
Line 5,0,5,650
Line 6,450,495,450
Vx=V0*Cos(P0*Pi/180)
Vy=V0*Sin(P0*Pi/180)
Y=H
V=V0
T=T+D
X=X+Vx*D
Y=Y+Vy*D
If Y<=0 Then End
V=Sqr(Vx*Vx+Vy*Vy)
Ax=0
Ay=-G
Vx=Vx+Ax*D/2
Vy=Vy+Ay*D/2
Xs=25*X
ys=1000-1.7*25*Y
Plot Xs,Ys
Wend
End 
 

Weazle25

Betreff: Re: Physik:Der Schiefe Wurf als Pc Diagramm

BeitragSa, Okt 16, 2004 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Sven1234(2) hat Folgendes geschrieben:
Nun ich habe mal mein Physikbuch zu Rate gezogen um diese zu programmieren,allerdings funktioniert der Code so nicht an was liegt das, wenn man die Zahlen eingibt funtzt es nicht warum.


1. solltest Du Dir angewöhnen die Satzzeichen zu benutzen.
Und schmeiss nicht alle Sätze in einen.
Mach kurze Sätze draus.

2. solltest Du Dein Problem schon etwas genauer beschreiben denn viele User sind so wie ich schon lange aus der Schule raus und haben kein aktuelles Physik-Buch in dem sie nachschlagen können.


Gruss
Weazle
 

Gerhard

BeitragSa, Okt 16, 2004 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf Anhieb würde ich sagen, dass du nur Integer-Zahlen verwendest. Du musst aber sicherlich mit Floats arbeiten.

Also PO# statt PO usw.
 

Cloud

BeitragSa, Okt 16, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
guck mal hier das sollte dir helfen:

https://www.blitzforum.de/view...highlight=
Duron 1200 | 256 RAM | Geforce 2 TI
 

Timo

BeitragSo, Okt 17, 2004 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich kann nur mein Wurfparabeln-Programm ans Herz legen Wink
Code: [AUSKLAPPEN]
AppTitle "Timos WurfparabelnZeichner"

Const gw = 1024
Const gh = 768
Const pw = 6

Graphics gw,gh,16,1
SetBuffer BackBuffer()
ClsColor 255,255,255
Cls

Local Schrittweite = 5
Local PosxAchse = 600      ; 0|0 im Punkt (10|PosxAchse)
Local v0 =  30             ; V0 in m/s
Local winkel = 45         ; Winkel in Grad
Local Gitter = 0
Local hide = 0
Local txt$,counter

Cls
Color 0,100,0
DrawCos(Schrittweite,PosxAchse,0)
ZeichneParabel(v0,winkel,Schrittweite,PosXAchse)
Text gw/2,10,"Copyright timo stahl... *gg*"
Text 40,20,"Schrittweite (* 10 Pixel) = " + Schrittweite + " Drück 1/2 für +/-"
Text 40,40,"X-Achse bei " + PosXAchse + " Pixeln. Drück 3/4 für +/-"
Text 40,60,"Geschwindigkeit V0 = " + v0 + "m/s. Drück 5/6 für +/-"
Text 40,80,"Winkel bei " + winkel + " Grad. Drück 7/8 für +/-"
Text 40,100,"Gitter: " + Gitter + " Gitter ein/aus, Drück G"
Text 40,120,"Für Parabel speichern ( als .bmp im Ordner), P drücken.
Text 40,140,"Diesen Text hier anzeigen an/aus --> Drück H"
Text 40,160,"ESC - um zu beenden"
Flip

timer = CreateTimer(10)

   While Not KeyHit(1)
      WaitTimer(timer)
      taste = 0
      
      
      key=GetKey()
      If key > 1 Then
         If key > 48 And key < 57
            If key = 49 Then Schrittweite = Schrittweite + 1
            If key = 50 Then Schrittweite = Schrittweite - 1   
            If key = 51 Then PosXAchse = PosXAchse + 10
            If key = 52 Then PosXAchse = PosXAchse - 10
            If key = 53 Then v0 = v0 + 1
            If key = 54 Then v0 = v0 - 1
            If key = 55 Then winkel = winkel + 1   
            If key = 56 Then winkel = winkel - 1
            
            If Schrittweite < 1 Then Schrittweite = 1
            If PosXAchse < 0 Then PosXAchse = 0
            If PosXAchse > gh Then PosXAchse = gh
            If v0 < 1 Then v0 = 1
            If winkel < 0 Then winkel = 0
            If winkel > 89 Then winkel = 89
         taste = 1
         EndIf   
         
         If key = 103 Then ;g
            Gitter = 1 - Gitter   
            taste = 1
         EndIf
         
         If key = 104 Then ;h
            hide = 1 - hide
            taste = 1
         EndIf
         
         If key = 112 Then ;p
            Cls
            DrawCos(Schrittweite,PosxAchse,gitter)
            ZeichneParabel(v0,winkel,Schrittweite,PosXAchse)
            Txt$ = CurrentDate$()
            counter = 0
            Repeat
               If FileType(CurrentDir() + txt$ + "_" + counter + ".bmp") = 0 Then 
                  SaveBuffer( BackBuffer(), txt$ + "_" + counter + ".bmp" )
                  Exit
               Else
                  counter = counter + 1
               EndIf
            Forever
         EndIf 
      EndIf

      
      
      
      
      If Taste = 1 Then 
         Cls
         Color 0,100,0
         DrawCos(Schrittweite,PosxAchse,gitter)
         ZeichneParabel(v0,winkel,Schrittweite,PosXAchse)
         
         If hide = 0 Then
          Text gw/2,10,"Copyright timo stahl... *gg*"
            Text 40,20,"Schrittweite (* 10 Pixel) = " + Schrittweite + " Drück 1/2 für +/-"
            Text 40,40,"X-Achse bei " + PosXAchse + " Pixeln. Drück 3/4 für +/-"
            Text 40,60,"Geschwindigkeit V0 = " + v0 + "m/s. Drück 5/6 für +/-"
            Text 40,80,"Winkel bei " + winkel + " Grad. Drück 7/8 für +/-"
            Text 40,100,"Gitter: " + Gitter + " Gitter ein/aus, Drück G"
            Text 40,120,"Für Parabel speichern ( als .bmp im Ordner), P drücken.
            Text 40,140,"Diesen Text hier anzeigen an/aus --> Drück H"
            Text 40,160,"ESC - um zu beenden"
         EndIf
         Flip
      EndIf
      
   Wend
End

Function ZeichneParabel(v0,winkel,Schrittweite,PosXAchse)
Local t#,x#,y#
   For t = 0 To 10 Step 0.01
      x = v0 * t * Cos#(winkel)
      y = v0 * t * Sin#(winkel) + ( - 0.5 * 9.81 * t * t )
      Plot x * Schrittweite + 10 ,( - y * Schrittweite + PosXAchse )
   Next 

End Function


Function DrawCos(Schrittweite,PosXAchse,gitter)
   Color 0,0,0
   Rect 10,0,1,gh
   Rect 0,PosXAchse,gw,1

   i = 0
   Repeat
      i = i + 1
      If gitter = 0 Then Rect i * 10 * Schrittweite + 10,PosXAchse - pw,1,pw*2,1 Else Rect i * 10 * Schrittweite + 10,0,1,gh,1           
      Text i * 10 * Schrittweite + 10,PosXAchse + pw + 10,i * 10,1,1
   Until i * schrittweite > gw
   
   i = 0
   Repeat
      i = i + 1
      If gitter = 0 Then Rect 10 - pw,i * 10 * Schrittweite + PosXAchse ,pw * 2,1,1 Else Rect 0,i * 10 * Schrittweite + PosXAchse ,gw,1,1
      If gitter = 0 Then Rect 10 - pw, PosXAchse - i * 10 * Schrittweite,pw * 2,1,1 Else Rect 0, PosXAchse - i * 10 * Schrittweite,gw,1,1
      Text 20 + pw, PosXAchse - i * 10 * Schrittweite,i * 10 ,1,1
      Text 20 + pw, i * Schrittweite * 10  + PosXAchse,i * 10 ,1,1
   Until i * schrittweite > gh   
End Function


probier in mal aus, der müsste genau das sein was du brauchst Wink

stfighter01

BeitragSo, Okt 17, 2004 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
mir sind ein paar fehler aufgefallen

zum einen eben das mit den floats.
2. die winkelfunktion funktioniert unter BB mit graden (0-360) und nicht mit bogenmas.
3. durchblick ich den rest auf die schnelle nicht so ganz.

aber schau dir das mal an
hab deinen code ein wenig umgemodelt

Code: [AUSKLAPPEN]

Graphics3D 640,480,0,2
SetBuffer FrontBuffer()

V0#=Input("Geschwindikeit:")
P0#=Input("Winkel:")
G#=Input("Fallbeschleunigung:")
H#=Input("Abwurfhöhe:")
D#=Input("Zeitschritt:")

Vx#=V0*Cos(P0)
Vy#=V0*Sin(P0)

XS#= 5
YS#= 450-H#

Color 255,255,255
While Not KeyDown(1)
Cls
Line 5,0,5,650
Line 6,450,495,450

VY#= VY#-(G#*D#)  ;änderung der geschwindigkeit aufgrund der fallbeschleunigung

XS#= XS#+(VX#*D#)  ;änderung der position aufgrund der geschwindigkeit in x
YS#= YS#-(VY#*D#)   ;----------------------------------------------------in y

V0= Sqr((VX*VX)+(VY*VY)) ;Die neue absolute geschwindigkeit (unwichtig für die simulation)
P0= (ATan2(VX,VY)+360) Mod 360;  Der neue winkel der geschwindikeit (unwichtig für die simulation)

Oval XS#-5,YS#-5,10,10
Flip
Wend
End




mfg stfighter
Denken hilft!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group