Please help projectile motion
I have a problem i need to print out a table of time x values and y values for the path of a projectile, but cannot get it anyway i try. Here is my code and i would appreciate if someone could help me.
%Constants and initial values
g = -9.8;
conv = (pi/180);
%Get users inputs in the following order:distance,velocity,angle
try
distance = input ('Please enter the distance to your target: (meters) \n');
m = Distance <= 0;
if m == 1
disp ('::FATAL ERROR: Distance cannot be < or = to zero, goodbye')
break
end
catch ME
end
try
velocity = input ('Please enter initial velocity of the projectile: (m/s) \n');
m = velocity <= 0;
if m == 1
disp ('::FATAL ERROR: Velocity cannot be < or = to zero, goodbye')
break
end
catch ME
end
try
theta = input ('Please enter an angle (degrees) between 0 and 90: \n');
m = theta < 0 | Theta > 90;
if m == 1
disp ('::FATAL ERROR: Angle cannot be < or = to zero, goodbye')
break
end
catch ME
end
%Calculate initial x and y velocitys, time, and range
voy = velocity*sin(theta*conv);
vox = velocity*cos(theta*conv);
time = -2*(voy / g);
range = (vox*time)
%Show how far bag traveled
fprintf ('The bean bag traveled a total of %6.2f meters \n',range)
%Create masks to determine how close projectile was to target
ma = (range-2.5 <= Distance && Distance <= range+2.5);
mb = (range > Distance-2.5);
mc = (range < Distance+2.5);
%Interpret masks
if ma == 1
fprintf ('Your bag hit the target right on!! GOOD AIM')
elseif mb == 1
fprintf ('so your bean bag traveled long %6.2f meters \n', abs(range - distance))
elseif mc == 1
fprintf ('so your bean bag traveled short %6.2f meters \n', abs(distance - range))
end
disp 'Please press enter to see (x,y) coordinates as a funtion of time:'
pause
%TABLE/GRAPH%
xpos = 0; %Set starting location at (x,y)=(0,0)
ypos = 0;
t=0; %Random incrementing variable(represents time).
for t=0:.1:100
t=t+1;
vy = voy + (g*t);
xpos = xpos + (vox*.1);
ypos = ypos + (voy*.1);
out = [t' xpos' ypos']
fprintf ( 'The x value is %6.2d and y value is %6.2d n\',out(t,:))
if( ypos < 0 )
break;
end
end
%Constants and initial values
g = -9.8;
conv = (pi/180);
%Get users inputs in the following order:distance,velocity,angle
try
distance = input ('Please enter the distance to your target: (meters) \n');
m = Distance <= 0;
if m == 1
disp ('::FATAL ERROR: Distance cannot be < or = to zero, goodbye')
break
end
catch ME
end
try
velocity = input ('Please enter initial velocity of the projectile: (m/s) \n');
m = velocity <= 0;
if m == 1
disp ('::FATAL ERROR: Velocity cannot be < or = to zero, goodbye')
break
end
catch ME
end
try
theta = input ('Please enter an angle (degrees) between 0 and 90: \n');
m = theta < 0 | Theta > 90;
if m == 1
disp ('::FATAL ERROR: Angle cannot be < or = to zero, goodbye')
break
end
catch ME
end
%Calculate initial x and y velocitys, time, and range
voy = velocity*sin(theta*conv);
vox = velocity*cos(theta*conv);
time = -2*(voy / g);
range = (vox*time)
%Show how far bag traveled
fprintf ('The bean bag traveled a total of %6.2f meters \n',range)
%Create masks to determine how close projectile was to target
ma = (range-2.5 <= Distance && Distance <= range+2.5);
mb = (range > Distance-2.5);
mc = (range < Distance+2.5);
%Interpret masks
if ma == 1
fprintf ('Your bag hit the target right on!! GOOD AIM')
elseif mb == 1
fprintf ('so your bean bag traveled long %6.2f meters \n', abs(range - distance))
elseif mc == 1
fprintf ('so your bean bag traveled short %6.2f meters \n', abs(distance - range))
end
disp 'Please press enter to see (x,y) coordinates as a funtion of time:'
pause
%TABLE/GRAPH%
xpos = 0; %Set starting location at (x,y)=(0,0)
ypos = 0;
t=0; %Random incrementing variable(represents time).
for t=0:.1:100
t=t+1;
vy = voy + (g*t);
xpos = xpos + (vox*.1);
ypos = ypos + (voy*.1);
out = [t' xpos' ypos']
fprintf ( 'The x value is %6.2d and y value is %6.2d n\',out(t,:))
if( ypos < 0 )
break;
end
end
0
Comments
also, please re-post your code inside of [php] [/php] tags.
here is my code again
and it will look like this:
here's the new code:
the problem you were having is that 't' is not always a positive integer, and therefore cannot be used to index the matrix.