...
Tips: cos og sin i Matlab regner med radianer. Bruk derfor cosd
og sind
eller benytt følgende: grader = radianer*(180/pi)
Code Block | ||
---|---|---|
|
...
Code Block | ||
---|---|---|
| ||
>> [vx,vy] = initVelocity(0,100) vx = 100 vy = 0 >> [vx,vy] = initVelocity(90,100) vx = 0 vy = 100 >> [vx,vy] = initVelocity(45,100) vx = 70.7107 vy = 70.7107 |
...
Akselerasjonen er i denne oppgaven gitt ved:
Her har vi en konstant, k = 0.01
, som representerer luftmotstanden og g
, som er gravitasjonskonstanten (9.81 på jorden).
...
Lag funksjonen plotTrajectory
. Denne har de samme parameterene som (initialSpeed, initialAngle,
height)
trajectory()
.
Den skal benytte seg av plot()
-funksjonen for å vise kulens bane.
Code Block | ||
---|---|---|
| ||
>> plotTrajectory(100,45,10) |
...
Lag funksjonen plotTrajectoryLength(initialSpeed, start, step, stop, height).
Den skal kalle trajectory()
med vinkler mellom start
og stop
, med steglengde step
. Deretter skal den plotte vinklene mot de korresponderende lengdene av kulestøtet.
...
Code Block | ||
---|---|---|
| ||
>> plotTrajectoryLength(100,0,45/8,90,10) |
Utskriften fra funksjonen skal se nogenlunde slik ut:
h)
Det ønskes en enkel måte å visualisere kulestøtet som en animasjon. Se om alt fungerer ved å lagre koden under og kjøre den med noen verdier.
Code Block | ||
---|---|---|
| ||
function animate(initialSpeed, initialAngle, height) [xliste, yliste]= trajectory(initialSpeed, initialAngle, height); dt=0.1; % Setter tidsintervall xmax = max(xliste); xmin = min(xliste); ymax = max(yliste); ymin = min(yliste); xlen = length(xliste); axis([xmin xmax ymin ymax]); hFig = figure(1); set(hFig, 'Position', [xmin ymin 1200 800]) for i = [1:length(xliste)] % printer plottet, ett steg lengre for hver iterasjon hold on; % Vil beholde det eksisterende plottet. plot(xliste(1:i),yliste(1:i), '-k'); % Hva skjer her? pause(dt/initialSpeed*2); % Koden kjører for fort, ber den pause med "dt" end end |