Could someone perhaps guide me in the right direction to figure out a way to start this code?

1 回表示 (過去 30 日間)
Collin Kerr
Collin Kerr 2016 年 4 月 21 日
コメント済み: Collin Kerr 2016 年 4 月 28 日
(Assignment) "Your program should also have a feature that predicts the velocities and elevation angles at which the projectile can be launched to hit a target given a specified distance. The input to this part of the program should be only the target distance. The output from this part of the program should be the velocities and launch angles for the projectile."
I don't see a way to get both those outputs by just inputting a distance. I'm not asking for someone to give me a code, but just a something to help me start.
  3 件のコメント
James Tursa
James Tursa 2016 年 4 月 21 日
編集済み: James Tursa 2016 年 4 月 21 日
I assume you have been studying projectile motion in class. So what equations are you familiar with for this motion? Forget the targeting aspects for the moment ... if you were simply given a velocity and an angle, could you write a program to predict its trajectory? Start with that. Once you have that working, then it shouldn't be too much work to extend it to a targeting program. See this link:
https://en.wikipedia.org/wiki/Projectile_motion
Collin Kerr
Collin Kerr 2016 年 4 月 21 日
編集済み: Walter Roberson 2016 年 4 月 21 日
clc,clear
F = input('Targeted Distance = ');
V_o = input('Velocity at launch = ');
Theta = input('Elevation angle at launch = ');
a=-9.81; %Its a given
b=V_o*sind(Theta) %It makes the coding a bit less confusing.
c=0; %Also a given
fprintf('The targeted distance for the launch is %d meters. \n', F)
fprintf('The velocity for the launch is %d meters per second. \n', V_o)
fprintf('The elevation angle for the launch is %d degrees. \n', Theta);
Q1=(-b-sqrt(b^2-4*a*c))/(a); %The 1/2 and times 2 cross out for the denom
disp(Q1)
%%Horizontal Range
H = V_o*cosd(Theta)*(Q1);
fprintf('The Horizontal Range of the launch is %0.3f \n', H)
%%Vertical Height
V = (b^2)/(a*2)*2;
fprintf('The Vertical Height of the launch is %0.3f \n', V)

サインインしてコメントする。

回答 (1 件)

Arnab Sen
Arnab Sen 2016 年 4 月 25 日
Hi Collin,
In this case there would be multiple velocity and launch angles. The formulae for projectile distance is
d=(v^2/g). sin(2.theta).
where v is initial velocity, g gravitational acceleration and theta is projection angle.
Now if d is given, then relation between v and theta will be,
v=sqrt(d.g.cosec(2.theta)).
Now, you can vary the theta from 1 to 90 degree in specific interval (e.g. 1 degree)and get corresponding velocities v and out the angle and their corresponding velocities in a table format.
  3 件のコメント
Arnab Sen
Arnab Sen 2016 年 4 月 26 日
Use '.*' and './' (element wise multiplication and division) instead of '*' and '/'
Collin Kerr
Collin Kerr 2016 年 4 月 28 日
buttonNumber = menu ('Select the targeted distance','8','9','10','11','12','13','14','15');
T = buttonNumber + 7;
velocities = linspace(8, 15, 1000);
angles = linspace(10, 80, 1000);
[V, A] = meshgrid(velocities, angles);
distanceImage= (V^2./a)*sin(2.*velocities)
imshow(distanceImage, []);
hold on;
contour(V,A,distanceImage)
Ive made some changes.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeApp Building についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by