function [ASTR,AH,AM,AS]=alt2gms(AG)
% function [ASTR,AH,AM,AS]=alt2gms(AG)
%
% conversion from degrees decimal in degrees, minutes, seconds
%
% 05.05.04 M.Penzkofer
% degrees
AH = fix(abs(AG));
% minutes
AM = fix((abs(AG)-AH)*60);
% seconds
AS = ((abs(AG)-AH)*60-AM)*60;
% emprove numerical imprecision
if (abs(AS) <= 0.0001)
AS = 0;
end
if (abs(AM) <= 0.0001)
AM = 0;
end
if (abs(AH) <= 0.0001)
AH = 0;
end
if (abs(AS) >= 59.9999)
AS = 0;
AM = AM + sign(AS)*1;
end
if (abs(AM) >= 59.9999)
AM = 0;
AH = AH + sign(AH)*1;
end
% sign
if (sign(AG) == -1)
if (AH ~= 0)
AH = -AH;
elseif (AM ~= 0)
AM = -AM;
else
AS = -AS;
end
end
% formatting
if (abs(AH) < 100)
if (abs(AH) < 10)
if (sign(AH) == -1)
bAH = ' ';
else
bAH = ' ';
end
else
if (sign(AH) == -1)
bAH = ' ';
else
bAH = ' ';
end
end
else
bAH = ' ';
end
if (abs(AM) < 10)
if (sign(AM) == -1)
bAM = ' ';
else
bAM = ' ';
end
else
if (sign(AM) == -1)
bAM = '';
else
bAM = ' ';
end
end
if (abs(AS) < 10)
if (sign(AS) == -1)
baS = ' ';
else
bAS = ' ';
end
else
if (sign(AS) == -1)
bAS = '';
else
bAS = ' ';
end
end
% String
ASTR = [bAH num2str(AH) ':' bAM num2str(AM) ':' bAS num2str(round(AS))];