MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

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]:=
> Angle/: MakeBoxes[Angle[{deg_,min_,sec_}],f_:TraditionalForm]:=
>          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]:=
quads4[x_,y_]:= Module[{a1,a2,a3,quots},
		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]:=
TableForm[Apply[quads4,coords,1],
	TableHeadings->{None,{"a1","a2","a3","tan a3"}},
	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
  • Previous by thread: Re: Reading data.
  • Next by thread: Re: AngularFormat again