sexagesimal

Rob Seaman seaman at noao.edu
Sat Sep 16 17:48:33 PDT 2006

> We define a Sexg to be a representation of an angle.

Or a time, of course.  Time-of-day can be interpreted as an angle,
too, but that isn't the typical case.

> The number of "hours or degrees" is the integer hds. It includes a
> conversion factor from hds to degrees.  There is a converter
> degreesPerHds which is 15 or 1 for hours or degrees. A Sexg is
> equivalent to a data structure:
> struct Sexg {
> 	int hds;
> 	int minutes;
> 	float seconds;
> 	float degreesPerHds;
> }

I suppose, but surely this won't be part of any IVOA recommendation?
Like I said, to IRAF a sexagesimal number is just another floating
point representation:

cl> = -47:30:01.234    # note no quotes - this is not a string!
-47.500342777778

cl> printf ("%13.3h\n", -47.500342777778)
-47:30:01.234

Why complicate things?

> The sky position object is then
> struct skyPosition {
> 	Sexg longitude;  // will be shifted to be >=0 and <360
> 	Sexg latitude;     // illegal if <-90 or >90
> }

You're starting to reinvent STC...

> That is why I propose to very liberal by allowing anything
> separated by "non-digit" characters. Writers have freedom and
> reading is easy.

Readers should be forgiving.  Writers should be strict.

> We can allow the minutes to be float, but ask IRAF to add seconds:
> hh:mm.mmm:00.

Sure, whatever you want:

cl> printf ("%10.3m:00\n", -47.500342777778)
-47:30.021:00

> There could be a translation in the XML to add the :00.

XSLT can do the formatting, or Perl or whatever, but it still seems
to me that we're overthinking the problem.  The fact that there are
any number of sexagesimal formats in use is, I suppose, a reflection
of how long they have been in use.  Sexagesimal notation predates
Arabic numerals, the place value system and the number zero.  In any
event, the fact is that astronomers and their journals and legacy
software support a wide variety of such formats.  What that suggests
is the need for toolkits, libraries, and translators to support the
various options.

Just for one more IRAF example - printf also has options for
converting from degrees to hours, etc., by dividing out the 15
implicitly:

cl> printf ("%H\n", -47.500342777778)
-3:10:00.1
cl> printf ("%M\n", -47.500342777778)
-3:10.0

Rob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ivoa.net/pipermail/dm/attachments/20060916/3b26db86/attachment-0001.html>