Wurfparabel mit C++ darstellen
-
Hallo, ich hab da ein Problem, ich versuche mir C++ eine wurfparabel zu zeichen, aber irgendwie funktioniert es nicht, hab das Programm unten mal gepostet. Kann mir jemand sagen was ich falsch mache. Hab mir gedacht das ich x immer um eins erhöhe und dann dann entsprechenden x-wert aufrechne, und dann ein Kreis mit den x/y werte zeiche.
#include <iostream.h> #include <conio.c> #include <winbgim.h> #include <math.h> void main() { initwindow(640,480); setcolor(2); setfillstyle(1,0); setcolor(14); int i; int r = 5; float t,y,v,x; float alpha=40; t=1; y=0; alpha=alpha*(3.14/180); while (x<600) { x=x+1; y=((-5.0*x*x)/(v*v*cos(alpha)*cos(alpha)))+(x*tan(alpha))*100; cout<<y;cout<<("\n"); circle(x,-y+100,r); delay(200); // floodfill(1,1,1); } getchar(); closegraph(); }
Danke
[edit="junix"]Bitte Code-Tags verwenden* sfds [/edit]
-
Womit genau arbeitest du eigentlich? Sieht nicht nach VCL cOde aus?
-
Weiß nicht was VCL ist. Das c++ Programm heißt jedenfalls Dev-c++. Kann also auch sein das es im falschen Forum ist, falls das der Fall ist tut es mir leid.Bin gerade erst am Anfang mit c++ zu programmieren.
Jedenfalls hab ich schon 10 verschiedene Formeln probiert für die Parabel, aber er zeichnet immer nur eine halbe Parabel....
-
Dieser Thread wurde von Moderator/in KlausB aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
was funktioniert nicht, wird nix gemalt? kommen komische werte raus?
du initialisierst x nicht und das v in deiner formel bekommt nie einen wert zugewiesen. ich schätze mal, da wird nix anständiges bei rauskommen
-
v und x, hab ich vergessen mit hier reinzu kopieren. Ist so, das die Kurve am anfang einen Bogen macht, aber dann immerweiter fast linear steigt statt irgendwann wieder zu sinken...
-
Also die Formel für eine Wurfparbel lautet folgendermassen:
x = v * t * cos(alpha);
y = v * t * sin(alpha) - 1/2 * g * t^2;wobei:
v = Anfangsgeschwindikeit
t = Zeit (sollte bei 0 anfangen ansonsten verschiebt man den Verlauf ist aber auch machmal erwünscht)
alpha = Startwinkel
g = Gravitation (damit sie/er/es wieder runter kommt. Ist normalerweise 9.18, wenn du hier was änderst solltest du die Parabel stauchen/strecken können.. als ob du auf dem Mond wärst ^^)Das du die Werte nur schwer eins zu eins auf dem Bildschirm zeichen kannst dürfte klar sein. Also einfach sagen 1 Pixel ist z.B. 0.1 Einheiten oder 5, je nachdem welche Werte du für die Parabel benützt.
Hoff mal ich konnte dir helfen da ich deine Formel nicht nachvollziehen konnte/wollte
-
Verwirrter schrieb:
Also die Formel für eine Wurfparbel lautet folgendermassen:
x = v * t * cos(alpha);
y = v * t * sin(alpha) - 1/2 * g * t^2;.. das ist richtig
Verwirrter schrieb:
.. da ich deine Formel nicht nachvollziehen konnte/wollte
Die Formel von Manne ist die Bahngleichung im Ortsraum. Beide sind bei Wikipedia nachzulesen.
Manne83 schrieb:
v und x, hab ich vergessen mit hier reinzu kopieren. Ist so, das die Kurve am anfang einen Bogen macht, aber dann immerweiter fast linear steigt statt irgendwann wieder zu sinken...
Das kann daran liegen, dass Du die Anfangswerte (also v) ungünstig gewählt hast. Auch multiplizierst Du y noch mit 100, aber den Wert von x übernimmst Du. D.h. der Winkel von 40Grad dürfte auf der Zeichnung sehr sehr steil werden; um 100 gegenüber x überhöht.
Du solltest Dir genau überlegen, wo Du mit Meter-Werten rechnest und wo mit Pixeln; und beides immer auseinander halten.
Versuche erst ein sehr kleines v und breche die Schleife auch ab, sobald y <0 wird. Ansonsten gilt, dass die Wurfweite sich berechnet nach
Umgekehrt kannst Du auch berechnen, wenn man R mit z.B. 600m (= Pixel?) vorgibt. Also
Gruß
Werner