Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Fra vinkel og starthastighet kan farten dekomponeres i x og y-retning:
vx = cos(angle)*speed
vy = sin(angle)*speed

Skriv funksjonen initalVelocity initVelocity(initalAngle, speed). Denne skal returnere initialhastighet i x og y-retning. 

Tips: cos og sin i Matlab regner med radianer. Bruk derfor cosd og sind eller benytt følgende: grader = radianer*(180/pi)

Eksempel på kjøring:

Code Block
languagenone
>> [vx, vy] = initialVelocityinitVelocity (0, 100)
vx %=
 skal returnere vx100
vy =
 100 , vy = 0
>> 
[vx, vy] = initialVelocityinitVelocity (pi /2, 100)
vx %=
 skal returnere vx = 6.1232e -15
vy ,=
 vy = 100
>> 
[vx, vy] = initialVelocityinitVelocity (pi /4, 100) % skal returnere vx =
vx =
   70.7107
vy ,=
 vy = 70.7107

 

b)

Farten i x- og y-retning er beregnet. Siden strekning = fart * tid vil den nye posisjonen være gitt ved: 

...

        Skriv funksjonen med signaturen function [x, y] = position(x, y, vx, vy, dt) som kalkulerer x- og y-koordinatet i neste steg, ut ifra det nåværende stegets posisjon og fart.    

        Funksjonen kan testes med følgende skriptEksempel på kjøring     

                                                                

Code Block
languagenone
[x, y] = position (10 , 10, 0, 1, 1)   % skal returnere x = 10, y = 11
 
[x, y] = position (10 , 10, 1, 0, 1)   % skal returnere x = 11, y = 10
 
[x, y] = position (10 , 10, 1, 1, 0.1) % skal returnere x = 10.1 , y = 10.1

 

c)

         Akselerasjonen er i denne oppgaven gitt ved:  

...

Skriv function [ax, ay] = acceleration(vx, vy). 

Funksjonen kan testes med følgende skriptEksempel på kjøring:

Code Block
languagenone
>> [ax, ay] = acceleration (0, 0)
ax %=
 skal returnere x = 0,
ay =
 y = -9.818100
>> 
[ax, ay] = acceleration (10 , 10) % skal returnere x =
ax =
    -1,
ay y=
 = -10.818100

 

d)

Skriv function [vx, vy] = velocity(ax, ay, vx, vy, dt). Denne beregner farten i det neste steget gitt nåværende fart og akselerasjon.

Eksempel på kjøring:

Code Block
languagenone
>> [vx,vy] = velocity(1,1,0,0,0.1)
vx =
    0.1000
vy =
    0.1000
>> [vx,vy] = velocity(-3,-9.81,50,20,1)
vx =
    47
vy =
   10.1900

e)

Skriv function [xv, yv] = trajectory(initialSpeed, initialAngle, height) . Denne funksjonen benytter seg av initialVelocity, acceleration, velocity og position. Den skal returnere en liste for x-koordinater og en liste for y-koordinater.
Tiden kulen bruker på å treffe bakken er ukjent, en while-løkke må derfor benyttes. Denne skal terminere når høyden blir mindre enn 0.

...

Lag funksjonen plotTrajectory. Denne skal ha samme parameterene som trajectory. Den skal benytte seg av plot-funksjonen for å vise kulens bane.  

Code Block
languagenone
>> plotTrajectory(100,pi/4,10)


Image Added

 

g)

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.  
Kjør funksjonen med start = 0, step =  pi/32 og stop = pi/2.

Eksempel på kjøring:

Code Block
languagenone
>> plotTrajectoryLength(100,0,pi/32,pi/2,10)

Image Added

Til ettertanke:
Hvilken vinkel gir best resultat?
Hva skjer om man endrer på høyden? 
Hva skjer om k og g endres?
Har farten noe å si for vinkelen?

...