Need help finding the cartesian coordinates of a projectile in flight.

2 vues (au cours des 30 derniers jours)
Evan Wray
Evan Wray le 21 Fév 2020
Commenté : Evan Wray le 22 Fév 2020
I am given the location of 2 observers on the ground (xy-plane, so z=0), and an azimuth angle (in degrees) as well as an elevation angle (in degrees) from each observer to a projectile in flight. How do I find where these 2 lines of sight intersect? (which would be the x,y,z location of the projectile)
Given Info:
x_obs1 = 671.4971
y_obs1 = 717.2387
z_obs1 = 0
az_obs1 = 75.1148
el_obs1 = 9.3679
x_obs2 = -1.2075*10^3
y_obs2 = 1.6302*10^3
z_obs2 = 0
az_obs2 = -6.4515
el_obs2 = 3.2086
My main problem is that due to the fact that the number have decimals the lines of sight never perfectly intersect. How do I tell if they intersect within 1 or 2 units? (basically if the projectile had a finite volume)
  3 commentaires
darova
darova le 21 Fév 2020
Is my drawing correct?
Evan Wray
Evan Wray le 21 Fév 2020
yes, your drawing is correct.

Connectez-vous pour commenter.

Réponse acceptée

David Goodmanson
David Goodmanson le 22 Fév 2020
Modifié(e) : David Goodmanson le 22 Fév 2020
Hi Evan,
Assume the two ground positions are p1 and p2. This method uses the 3d triangle p1,p2,and p3 (the intersection point), assumes that the triangle is closed, and calculates the distances {p1 to p3) and (p2 to p3). Then p3 itself can be calculated two different ways, based on starting from either p1 or p2. These agree reasonably well. For the final result you might consider the average of those two calculations of p3..
x1 = 671.4971;
y1 = 717.2387;
z1 = 0;
az1 = 75.1148;
el1 = 9.3679;
x2 = -1.2075*10^3;
y2 = 1.6302*10^3;
z2 = 0;
az2 = -6.4515;
el2 = 3.2086;
p1 = [x1 y1 0];
p2 = [x2 y2 0];
u1 = [cosd(el1)*cosd(az1) cosd(el1)*sind(az1) sind(el1)];
u2 = [cosd(el2)*cosd(az2) cosd(el2)*sind(az2) sind(el2)];
vgrd = p2-p1;
dgrd = norm(vgrd);
ugrd = vgrd/dgrd;
theta1 = acosd(dot(u1,ugrd));
theta2 = acosd(dot(u2,-ugrd));
phi = 180 - theta1 - theta2;
d2 = dgrd*sind(theta1)/sind(phi);
d1 = dgrd*sind(theta2)/sind(phi);
p3_1 = p1 + d1*u1 % these should agree
p3_2 = p2 + d2*u2
p3_1 - p3_2 % difference is fairly small
norm((p3_1 - p3_2))*2/(d1 + d2) % relative error

Plus de réponses (1)

darova
darova le 21 Fév 2020
Here is what i invented
clc,clear
x1 = 671.4971;
y1 = 717.2387;
z1 = 0;
az1 = 75.1148*pi/180;
el1 = 9.3679*pi/180;
[u1,v1,w1] = sph2cart(az1,el1,1); % create a vector1
x2 = -1.2075*10^3;
y2 = 1.6302*10^3;
z2 = 0;
az2 = -6.4515*pi/180;
el2 = 3.2086*pi/180;
[u2,v2,w2] = sph2cart(az2,el2,1); % create a vector1
plot3([x1 x2],[y1 y2],[z1 z2],'.-b')
hold on
quiver3(x1,y1,z1,u1,v1,z1,1e3)
quiver3(x2,y2,z2,u2,v2,z2,3e3)
hold off
axis equal
view(2)
  1 commentaire
Evan Wray
Evan Wray le 22 Fév 2020
this helps to visualize the problem but doesn't return the coordinates of the intersection point

Connectez-vous pour commenter.

Catégories

En savoir plus sur Calendar dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by