function [ Error ] = Shoot( Speed, Angle, Target ) Angle = Angle * pi/180; x = 0; y = 0; dx = Speed * cos(Angle); dy = Speed * sin(Angle); dt = 0.01; N = 0; plot([-1,100],[0,0],'b-'); hold on plot(real(Target), imag(Target), 'bx'); while(y >= 0) N = mod(N+1, 10); zx = x; zy = y; % gravity Ax = 0; Ay = -9.8; % Wind drag calculations v = sqrt(dx^2 + dy^2); wind = abs((v/30)^3); Ax = Ax - (dx/v) * wind; Ay = Ay - (dy/v) * wind; % Integrate dx = dx + Ax*dt; dy = dy + Ay*dt; x = x + dx*dt; y = y + dy*dt; if(N == 0) plot(x,y,'r.'); xlim([0,150]); ylim([0,100]); pause(0.1); end end x1 = zx; y1 = zy; x2 = x; y2 = y; x0 = x2 - (x2 - x1)/(y2-y1) * y2; Error = x0 - Target; end