You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

a)

function [vx , vy] = initVelocity(initialAngle, speed)
	vx = cos(initialAngle)*speed;
	vy = sin(initialAngle)*speed;
end

b)

function [x, y] = position(x,y, vx, vy, dt)
	x = x + vx*dt;
	y = y + vy*dt;
end 

c)

function [ ax , ay ] = acceleration (vx ,vy)
	k = 0.01;
	g = 9.81;
	ax = -k*vx*abs(vx);
	ay = -k*vy*abs(vy)-g;
end

d)

function [vx , vy] = velocity(ax, ay, vx, vy, dt)
	vx = vx + ax * dt;
	vy = vy + ay * dt;
end

e)

 function [xv , yv] = trajectory(initialSpeed, initialAngle, height)
    dt =0.01;
    x = 0;
    y = height ;
    [vx , vy] = initVelocity(initialAngle ,initialSpeed);
    i = 1;
    while y > 0
        % kalkuler akselerasjon
        [ax , ay] = acceleration(vx, vy);
         
        % kalkuler fart
        [vx , vy] = velocity(ax, ay, vx, vy, dt);
 
        % kalkuler endring i distanse
        [x, y] = position (x, y, vx, vy, dt);
        xv(i) = x;
        yv(i) = y;
        i = i + 1;
    end
end

f)

function plotTrajectory(initialSpeed, initialAngle, height)
    [x, y] = trajectory(initialSpeed, initialAngle, height);
    plot (x, y);
    grid on;
    xlabel('x');
    ylabel('y');
    title('plotTrajectory');
end 

g)

function plotTrajectoryLength (initialSpeed, start, step, stop, height)
    initialAngles = start:step:stop;
    n = length(initialAngles);
    lengths = zeros(n,1);
    for i = 1:n
        [x, y] = trajectory(initialSpeed, initialAngles(i), height);
        j = length (x);
        lengths (i) = x(j);
    end
    plot (initialAngles ,lengths);
    xlabel('Angle');
    ylabel('y');
    grid on;
    title('plotTrajectoryLength');
end

Det kan virke som om pi/4 (45 grader) gir lengst støt. Dette virker intuitivt korrekt.

Jo høyere man kaster fra, jo bedre er det å kaste mest mulig rett frem (i x-retning).

 

  • No labels