clear
clc
close
x=[8 0 -8 0 ].*1;
y=[-4 8 -4 0].*1;
z=[0 0 0 0 ].*1;
c=2.997924580*10^8;
x_s=10;y_s=20;z_s=9;
t1 = (sqrt((x_s-x(4))^2+(y_s-y(4))^2+(z_s-z(4))^2)-sqrt((x_s-x(1))^2+(y_s-y(1))^2+(z_s-z(1))^2))/c;
t2 = (sqrt((x_s-x(4))^2+(y_s-y(4))^2+(z_s-z(4))^2)-sqrt((x_s-x(2))^2+(y_s-y(2))^2+(z_s-z(2))^2))/c;
t3 = (sqrt((x_s-x(4))^2+(y_s-y(4))^2+(z_s-z(4))^2)-sqrt((x_s-x(3))^2+(y_s-y(3))^2+(z_s-z(3))^2))/c;
syms xs ys zs
eqn1 = sqrt((xs-x(4))^2+(ys-y(4))^2+(zs-z(4))^2)-sqrt((xs-x(1))^2+(ys-y(1))^2+(zs-z(1))^2)-(c*t1);
eqn2 = sqrt((xs-x(4))^2+(ys-y(4))^2+(zs-z(4))^2)-sqrt((xs-x(2))^2+(ys-y(2))^2+(zs-z(2))^2)-(c*t2);
eqn3 = sqrt((xs-x(4))^2+(ys-y(4))^2+(zs-z(4))^2)-sqrt((xs-x(3))^2+(ys-y(3))^2+(zs-z(3))^2)-(c*t3);
sol = solve([eqn1, eqn2, eqn3], [xs ys zs]);
m = 1;
for n = 1:length(sol.xs)
possibleSol(1,m) = double(sol.xs(n));
possibleSol(2,m) = double(sol.ys(n));
possibleSol(3,m) = double(sol.zs(n));
m=m+1;
end
idx = any(possibleSol < 0) | any(imag(possibleSol) ~=0);
possibleSol(:, idx) = [];
possibleSol(1,1)
possibleSol(2,1)
possibleSol(3,1)
scatter3(x,y,z)
output:
10
20
9