AngularFormat again

• To: mathgroup at smc.vnet.net
• Subject: [mg21037] AngularFormat again
• From: "Alan W.Hopper" <awhopper at hermes.net.au>
• Date: Sun, 12 Dec 1999 23:51:06 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```Hi everybody,

Thanks to all who replied to my query a little while back on how to
produce a degree, arcminute, arcsecond format with the
respective symbols in place.

Here is a summary,

In[1]:= Off[General::spell1]

From Jens-Peer Kuska ,

> In[21]:=
> Clear[dms];
> dms[n_]:=Module[{d,m,s,a},
>                d=IntegerPart[n];
>                a=60*FractionalPart[n];
>                m=IntegerPart[a];
>                s=60*FractionalPart[a];
>                Angle[{d,m,s}]]

> In[22]:=
>          RowBox[{MakeBoxes[deg,f],"\[Degree]",
>                  MakeBoxes[min,f],"\[CloseCurlyQuote]",
>                  MakeBoxes[sec,f],"\[CloseCurlyDoubleQuote]"}]

>> In[23]:=
>> Clear[dms];
>> Format[dms[n_]] := Module[{d, m, s, a}, d = IntegerPart[n];
>>    a = 60*FractionalPart[n];
>>    m = IntegerPart[a];
>>    s = 60*FractionalPart[a];
>>    SequenceForm[d, "° ", m, "' ", s, "\""]]

>>> In[24]:=
>>> Clear[dms];
>>> dms[n_]:=Module[{d,m,s,a},
>>> d=IntegerPart[n];
>>> a=60*FractionalPart[n];
>>> m=IntegerPart[a];
>>> s=60*FractionalPart[a];
>>> DegMinSecForm[d,m,s]]

>>>In[25]:=
>>> dmsString[DegMinSecForm[d_,m_,s_]]:=
>>> {
>>>   ToString[d]<>"°\[ThinSpace]"<>ToString[m]<>
>>>   "'\[ThinSpace]"<>ToString[s]<>"\""
>>> }
>>>In[26]:=
>>> MakeBoxes[n_DegMinSecForm,form_]:=
>>>  MakeBoxes[#,form]& @@dmsString[n]

Jens-Peer's, Helmut's, and Ted's programs all give the
degree, arcminute, and arcsecond symbols after their respective
numerical values, in their output, (after an input of dms[real No]).

Thanks also to ,

Peter Breitfeld [mg 20905] with 2 programs (a bit lengthy to reproduce),
which have an option for symbolic hour, minute, second format from
decimal hours. Both symbolic angular and time units can be re-formatted
to decimal fractions, with Peter's handy programs.

And David Park has been most helpful with a private communication
consisting of a package for the variant angular format used in Astronomy.

Lastly, I wonder if anyone has a comment to make on the program below
which shows the difficulty in getting a 'correct' angle from coordinates
in all the 4 quadrants of the real Cartesian plane.  Should there
be a built-in option to always get a positive angle result in Mathematica?

In[27]:=
N[
a1 = ArcTan[y/x]/ Degree;
a2 = ArcTan[x,y]/ Degree;
a3 = a2;
If[a3 < 0, a3 = a3 + 360];
quots = Tan[a3 Degree];
{a1,a2,a3,quots},12]]

In[28]:=
coords=
{{0.5,0.7},{-0.5,0.7},{-0.5,-0.7},{0.5,-0.7}};

In[29]:=
TableAlignments->Center]

Out[30]=
a1           a2            a3        tan a3
54.462...     54.462...    54.462...     1.4
-54.462...   125.5376...  125.5376...    -1.4
54.462...   -125.5376...  234.462...     1.4
-54-462...   -54.462...   305.5376...    -1.4

I know that a2 is valid by Mathematica's Tan and ArcTan definitions,

(Help Browser - ArcTan[x, y] gives the arc tangent of y/x,
taking into account which quadrant the point a is in.)

But I personally prefer the a3 result.

Alan Hopper,
awhopper at hermes.net.au

```

• Prev by Date: corrections to: Re: calculus with Grassmann variables
• Next by Date: Re: Packed Array Angst