function [xx,yy]=tvapkt(xv,yv,lv,bild); % % Funktion för att beräkna koordinaterna i den punkt man befinner sig i, då % man mätt avstånden till två kända punkter: % % Indata: % xv Vektor med de två kända punkternas x-koordinater. % yv Vektor med de två kända punkternas y-koordinater. % lv Vektor med de två uppmätta avstånden till respektive känd punkt. % bild Heltal, 1 eller 0, för bildritning eller ej. (Får utelämnas). % Utdata: % xx Vektor med de två lösningarnas x-koordinater. % yy Vektor med de två lösningarnas y-koordinater. % % Anrop: [xx,yy]=tvapkt(xv,yv,lv,bild) % xa=xv(1); ya=yv(1); la=lv(1); % Koordinater och avstånd till pkt A xb=xv(2); yb=yv(2); lb=lv(2); % Koordinater och avstånd till pkt B a=((xa^2+ya^2-la^2)-(xb^2+yb^2-lb^2))/(2*(xa-xb)); b=-(ya-yb)/(xa-xb); c=0; c(3)=a^2-2*a*xa+xa^2+ya^2-la^2; c(2)=2*a*b-2*b*xa-2*ya; c(1)=b^2+1; yy=roots(c); xx=a+b*yy; if nargin>3, % bildritning if bild==1; v=0:0.05:6.32; xca=xa+lv(1)*cos(v); yca=ya+lv(1)*sin(v); xcb=xb+lv(2)*cos(v); ycb=yb+lv(2)*sin(v); plot(xca,yca,xcb,ycb,xv,yv,'g*',xx,yy,'ro'); axis equal text(xv(1)+lv(1)/10,yv(1)+lv(1)/10,'A') text(xv(2)+lv(2)/10,yv(2)+lv(2)/10,'B') text(xx(1)+lv(1)/10,yy(1)+lv(1)/100,'P1') text(xx(2)+lv(2)/10,yy(2)+lv(2)/100,'P2') end; end;