Need help finding the cartesian coordinates of a projectile in flight.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Evan Wray
el 21 de Feb. de 2020
Comentada: Evan Wray
el 22 de Feb. de 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 comentarios
Respuesta aceptada
David Goodmanson
el 22 de Feb. de 2020
Editada: David Goodmanson
el 22 de Feb. de 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
Más respuestas (1)
darova
el 21 de Feb. de 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)
Ver también
Categorías
Más información sobre Calendar en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!