change ECEF to ALL

by

 

ECEF to ALL

E2ALL.m
%ϵλõľγȱʾ
%ߣ 
%date2011-10-6
%limitd means error torlerance
%ALL(1)-----------altitude   
%ALL(2)-----------latitude   range from 0~360
%ALL(3)-----------longitude  range from -90~90
%ǶΪȵдΪ˷ĵãûöıʾ
%ʡȥݽʱ鷳ת
%ҪʾʱڱһС򣬰0~360ľȱʾתɶ180ıʾ
function N=E2ALL(E)
Re=6378165;
limitd=0.0001;
if(abs(E(1))<limitd && abs(E(2))<limitd)
    if(abs(E(3))<limitd)
        N=[0 0 -Re];
    elseif(E(3)>0)
        N=[0 90 E(3)-Re];
    else
        N=[0 -90 E(3)-Re];
    end
elseif(abs(E(1))>=limitd && abs(E(2))<limitd)
    if(E(1)>0)
        longitude=0;
    else
        longitude=180;
    end
    if(abs(E(3))<limitd)
        N=[longitude 0 E(1)-Re];
    else
        latitude=atan(E(3)/E(1))/pi*180;
        r=(E(1)^2+E(2)^2)^0.5;
        N=[longitude latitude r-Re];
    end
elseif(abs(E(1))<limitd && abs(E(2))>=limitd)
    if(E(2)>0)
        longitude=90;
    else
        longitude=270;
    end
    if(abs(E(3))<limitd)
        N=[longitude 0 E(2)-Re];
    else
        latitude=atan(E(3)/abs(E(2)))/pi*180;
        r=(E(2)^2+E(3)^2)^0.5;
        N=[longitude latitude r-Re];
    end
else
    if(E(1)>=0 && E(2)>=0)
        longitude=atan(E(2)/E(1))/pi*180;
    elseif(E(1)<0 && E(2)>0)
        longitude=180+atan(E(2)/E(1))/pi*180;
    elseif(E(1)<0 && E(2)<0)
        longitude=180+atan(E(2)/E(1))/pi*180;
    else
        longitude=360+atan(E(2)/E(1))/pi*180;
    end
    if(abs(E(3))<limitd)
        r=(E(1)^2+E(2)^2)^0.5;
        N=[longitude 0 r-Re];
    else
        r=(E(1)^2+E(2)^2)^0.5;
        latitude=atan(E(3)/r)/pi*180;
        r=(E(1)^2+E(2)^2+E(3)^2)^0.5;
        N=[longitude latitude r-Re];
    end
end
end

Contact us