Physik:Der Schiefe Wurf als Pc Diagramm
Übersicht

Sven1234(2)Betreff: Physik:Der Schiefe Wurf als Pc Diagramm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Weazle25Betreff: Re: Physik:Der Schiefe Wurf als Pc Diagramm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
guck mal hier das sollte dir helfen:
https://www.blitzforum.de/view...highlight= |
||
Duron 1200 | 256 RAM | Geforce 2 TI |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich kann nur mein Wurfparabeln-Programm ans Herz legen ![]() 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 ![]() |
||
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group