No BSD License  

Highlights from
Skyplot1001

image thumbnail
from Skyplot1001 by Markus Penzkofer
Virtual Planetarium showing stars, the planets, the sun and the moon.

[ASTR,AH,AM,AS]=alt2gms(AG)
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))];

Contact us at files@mathworks.com