> 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 Received on 2006-09-17Z02:48:59