Hallo leute, geduldige leser und noch geduldigere helfer.
Als ziemlicher neuling auf dem gebiet matlab wurde mir die aufgabe gestellt den schiefen wurf ohne luftwiederstand zu plotten und der kurve eine "rakete" folgen zu lassen.
den schiefen wurf habe ich mit
Code:
alpha=2*pi*(45/360)
v0=300*1000/3600
t=0:0.01:12.2;
vx=v0*cos(alpha);
vy=v0*sin(alpha);
g=9.81;
x=vx*t;
y=vy*t-g/2*t.^2;
plot(x,y) hold on
axis equal
grid on
in "startposition" gebracht. hier fängt dann das problem an ^_^
die rakete soll circa 10x geplottet werden und jeweils richtig gedreht werden.
Wie bekomme ich matlab nun dazu mir nur 9 weitere wertepaare auszugeben und wie bekomme ich den dazugehörigen rotationswinkel zustande?
Der winkel zum jeweiligen punkt müsste ja über die 1. ableitung der funktion zu erfahren sein auch wenn man hier mit dem vorzeichen nach dem scheitelpunkt wohl aufpassen muss.
leider sind meine "sprachkenntnisse" in matlab mehr alsmangelhaft und so hoffe ich nun auf euch
alpha = vy - g*t;
alpha = alpha * pi/180 - pi/2;
for Counter1 = 1:140:1200
di = d*cos(alpha(1,Counter1)) - e*sin(alpha(1,Counter1));
ed = d*sin(alpha(1,Counter1)) + e*cos(alpha(1,Counter1));
di = di + x(1,Counter1);
ed = ed + y(1,Counter1);
line(di,ed) end
Jetzt die Erklärung:
Als erstes berechnerst Du den Winkel für jeden Punkt der Kurve, wie Du ja schon richitg gesagt hattest.
Wichtig ist, dass Matlab unter sin(a) das a in Rad erwartet. Gewöhnlich rechen wir ja da mit Grad. Das wäre in Matlab sind(a). Also sin'degree'.
Gleiches gilt natürlich für cos, tan,.....
Deshalb die Zeile, in der einfach nur Grad in Rad gewandelt werden. Das -pi/*2 dient dazu, die Rakete um einen konstanten Winkel zu drehen. Änder den Wert einfach mal, und schau Dir den plot an, dass siehst Du das gleich.
Jetzt kommt die for-Schleife, die dafür sorgt, dass die Rakete 10 mal auftaucht. Die folgenden beiden Zeilen hab ich von Dir übernommen, nur dass alpha ein Vektor ist, und ich mit der Anweisung in Klammern den Winkel auswähle, der zu dem Ort an der Parabel gehört, an dem sich die Rakete gerade befindet. Ausserdem hab ich das '-' vor dem alpha gelöscht. In der Regel gibt es bei Rotationsmatrizen kein negatives Vorzeichen vor dem Winkel. Nur das Vorzeichen vor dem sin ändert sich!
Die beiden nächsten Zeilen verschieben die Rakete erntlang der Kurve. Dazu addiere ich zu den Koordinaten der Rakete einfach die Koordinaten der Kurve, an der die Rakete sein soll.
Fertig!
Was aber auffällt: Die Spitze der Rakete liegt nicht auf der Parabel. Das liegt daran, dass der Fuss der Rakete an den Punkt gesetzt wird, für den der Winkel gilt. Wenn Dir das nicht gefällt, musst Du eben den Mittelpunkt der Rakete an den Punkt schieben, für den Du den Winkel ausgewählt hast. Dann ist der Fehler im Fuss und an der Spitze halbwegs gleichmässig. Ganz vermeiden lässt sich eine Abweichung aber nur mit einer punktförmigen Rakete. Das würde zwar nciht so toll aussehen, aber alles viiiiel einfacher machen
wow super und vielen vielen dank für die schnelle Hilfe
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.