MATLAB Matlab Projectile Motion Table and Graph

  • Thread starter Thread starter juice34
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The discussion revolves around a program designed to calculate and print a formatted table of projectile motion based on user inputs for distance, velocity, and angle. The code includes error handling for invalid inputs, ensuring that distance, velocity, and angle are within acceptable ranges. It calculates the initial x and y velocities, time of flight, and range of the projectile, providing feedback on whether the projectile hits the target accurately. The program attempts to print the x and y coordinates as a function of time but lacks proper formatting in the output section. The user seeks assistance in formatting the printed table correctly. The thread also notes a long wait for a response, indicating the post's age and the hope that it may still assist others in similar situations.
juice34
I have a program that needs to print out a formated table of time x distance and ydistance. I got everything written except for figureing out how to print out formatted tables could somebody help me here is the code.

%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
 
Physics news on Phys.org
A formatted print should do the trick.
 
DrClaude said:
A formatted print should do the trick.

DrClaude,

I have been waiting for this reply going on about 11 years or so! I can turn in my homework!
 
  • Haha
Likes DrClaude
We're doing some spring cleaning to reduce the number of old unanswered threads. Hopefully, even though this is no longer of help to you, someone else might stumble upon this thread and find it useful.
 

Similar threads

Replies
3
Views
2K
Replies
1
Views
3K
Replies
4
Views
3K
Replies
1
Views
3K
Replies
1
Views
3K
Replies
4
Views
7K
Replies
2
Views
2K
Back
Top