Spherical

# Spherical Coordinates for the HP-41

Overview

1°)  3-Dimensional Space

a)  For the Physicists & Astronomers  ( Focal & M-Code Routines )
b)  For the Mathematicians

2°)  n-Dimensional Space

a)  For the Physicists & Astronomers
b)  For the Mathematicians

1°)  3-Dimensional Space

a)  For the Physicists & Astronomers

-We use the following formulae:

x = r cos b cos L
y = r cos b sin L
z = r sin b

where    x , y , z = rectangular coordinates,    r  = ( x2 + y2 + z2 )1/2  ,   L  = longitude ,  b = latitude

-However, the results can be obtained more easily by the R-P and P-R functions:
T-register is saved and no data register is used !
-These programs are also listed in "Transformation of Coordinates"

 01  LBL "R-S"  02  R-P  03  X<>Y  04  RDN  05  R-P  06  R^  07  X<>Y  08  RTN  09  LBL "S-R"  10  X<>Y  11  RDN  12  P-R  13  R^  14  X<>Y  15  P-R  16  END

( 30 bytes / SIZE 000 )

 STACK INPUTS1 OUTPUTS1 INPUTS2 OUTPUTS2 T T T T T Z z b b z Y y L L y X x r r x

Example:     x = 2 ; y = 4 ; z = 7         ( in DEG mode )

7  ENTER^
4  ENTER^
2  XEQ "R-S"     r  =  8.306623863
RDN     L  = 63°43494882
RDN     b =  57°42644430

-And if you execute "S-R" ( or simply press R/S )  with these numbers in X , Y , Z you'll get  x = 2 , y = 4 , z = 7 again

- "R-S" and "S-R" work in all angular modes

>>>  M-Code Routine

-These routines perform the same calculations
-There is no check for alpha data and you'll sometimes get -0 instead of 0 ...

093   "S"
02D   "-"
012    "R"
104   CLRF 8
02B   JNC+05
092   "R"
02D   "-"
013   "S"
108   SETF 8
2A0  SETDEC
0B8  C=Y
10E  A=C ALL
10C  ?FSET 8
02B   JNC+05
078   C=Z
0A8  Y=C
0AE  A<>C ALL
068   Z=C
0F8   C=X
128   L=C
070   N=C ALL
351   ?NCXQ
084   21D4
10C  ?FSET 8
1D5   ?NCXQ
079   1E75
10C   ?FSET 8
125   ?NCXQ
074   1D49
0E8   X=C
078   C=Z
0A8   Y=C
0AE   A<>C ALL
0F0   C<>N ALL
068   Z=C
0F8   C=X
070   N=C ALL
351   ?NCXQ
084   21D4
10C  ?FSET 8
1D5   ?NCXQ
079   1E75
10C   ?FSET 8
125   ?NCXQ
074   1D49
0E8   X=C
10C   ?FSET 8
023   JNC+04
0F0   C<>N ALL
0A8   Y=C
3E0   RTN
078   C=Z
0A8  Y=C
0F0   C<>N ALL
068   Z=C
3E0   RTN

( 56 words )

 STACK INPUTS1 OUTPUTS1 INPUTS2 OUTPUTS2 T T T T T Z z b b z Y y L L y X x r r x L / x / r

-The same examples return the same results.
-Here, the original content of register X is saved in L-register.

-It's only slightly faster than the focal programs.
-Even in M-Code, the trigonometric functions remain slow.

b)  For the Mathematicians

-Slightly different formulas are employed:

x = r cos µ
y = r sin µ cos (phi)
z = r sin µ sin (phi)

where    x , y , z = rectangular coordinates,    r  = ( x2 + y2 + z2 )1/2  as before

 01  LBL "R-S2"  02  RDN  03  R-P  04  R^  05  R-P  06  RTN  07  LBL "S-R2"  08  P-R  09  RDN  10  P-R  11  R^  12  END

( 28 bytes / SIZE 000 )

 STACK INPUTS1 OUTPUTS1 INPUTS2 OUTPUTS2 T T T T T Z z phi phi z Y y µ µ y X x r r x

Example:     x = 2 ; y = 4 ; z = 7         ( in DEG mode )

7  ENTER^
4  ENTER^
2  XEQ "R-S2"     r  =  8.306623863
RDN      L  = 76°06790845
RDN      b =  60°25511870

-And if you execute "S-R2" ( or simply press R/S )  with these numbers in X , Y , Z you'll get  x = 2 , y = 4 , z = 7 again

- "R-S2" and "S-R2" also work in all angular modes.

2°)  N-Dimensional Space

a)  For the Physicists & Astronomers

-The formulas are generalized as follows:

xn  =  r sin µn-1
xn-1 =  r cos µn-1 sin µn-2
xn-2 =  r cos µn-1 cos µn-2 sin µn-3
..........................................................

x1 =  r cos µn-1 cos µn-2 cos µn-3  ..............  cos µ1

Data Registers:               R00 = unused                 ( Registers R01 thru Rnn are to be initialized before executing "RN-SN" or "SN-RN" )

•  R01 = x1                                    •  R01 = r
•  R02 = x2                                    •  R02 = µ1
.................                  or               .................

•  Rnn = xn                                     •  Rnn = µn-1

>>>  When the program stops, the new coordinates have replaced the inputs in R01 thru Rnn

Flags: /
Subroutines:  /

 01  LBL "RN-SN"  02   E3  03  /  04  ISG X  05  ENTER^  06  ISG X  07  RCL 01 08  LBL 01  09  RCL IND Y    10  X<>Y  11  R-P  12  X<>Y  13  STO IND Z  14  RDN 15  ISG Z  16  ISG Y  17  GTO 01  18  STO 01  19  RTN  20  LBL "SN-RN"  21  ENTER^ 22  DSE Y  23  RCL 01  24  LBL 02  25  RCL IND Y    26  X<>Y  27  P-R  28  X<>Y 29  STO IND Z    30  RDN  31  DSE Y  32  DSE Z  33  GTO 02  34  STO 01  35  END

( 67 bytes / SIZE nnn+1 )

 STACK INPUT1 OUTPUT1 INPUT2 OUTPUT2 X n > 1 r n > 1 x1

Example:     In a 4-dimensional space,   x = 2 ; y = 4 ; z = 7 ; t = 10        ( in DEG mode )

2   STO 01
4   STO 02
7   STO 03
10  STO 04

4   XEQ "RN-SN"   >>>>   13 = R01 = r    and

R02 = µ1 = 63°43494882
R03 = µ2 = 57°42644430
R04 = µ3 = 50°28486277

-Then   4  XEQ "SN-RN"  stores the 4 initial numbers  2  4  7  10  in  R01 to R04  again

-These routines work in all angular mode.
-For n = 10 , execution time is about 8 seconds.

b)  For the Mathematicians

-The formulas are generalized differently:

x1  =  r cos µ1
x2  =  r sin µ1 cos µ2
x3  =  r sin µ1 sin µ2 cos µ3
..........................................................

xn =  r sin µ1 sin µ2 sin µ3  ..............  sin µn-1

Data Registers:               R00 = unused                 ( Registers R01 thru Rnn are to be initialized before executing "RN-SN2" or "SN-RN2" )

•  R01 = x1                                    •  R01 = r
•  R02 = x2                                    •  R02 = µ1
.................                  or               .................

•  Rnn = xn                                     •  Rnn = µn-1

>>>  When the program stops, the new coordinates have replaced the inputs in R01 thru Rnn

Flags: /
Subroutines:  /

 01  LBL "RN-SN2"  02  STO Y  03  RCL IND X  04  DSE Y  05  LBL 01  06  RCL IND Y  07  R-P 08  RDN  09  STO IND Z       10  X<> T  11  DSE Z  12  DSE Y  13  GTO 01  14  STO 01 15  RTN  16  LBL "SN-RN2"  17   E3  18  /  19  ISG X  20  ENTER^  21  ISG X 22  RCL 01  23  LBL 02  24  RCL IND Y      25  X<>Y  26  P-R  27  STO IND T  28  RDN 29  ISG Z  30  ISG Y  31  GTO 02  32  STO IND Z       33  END

( 71 bytes / SIZE nnn+1 )

 STACK INPUT1 OUTPUT1 INPUT2 OUTPUT2 X n > 1 r n > 1 x1

Example:     In a 4-dimensional space,   x = 2 ; y = 4 ; z = 7 ; t = 10        ( in DEG mode )

2   STO 01
4   STO 02
7   STO 03
10  STO 04

4   XEQ "RN-SN2"   >>>>   13 = R01 = r    and

R02 = µ1 = 81°15011690
R03 = µ2 = 71°85640421
R04 = µ3 = 55°00797980

-Then   4  XEQ "SN-RN2"  stores the 4 initial numbers  2  4  7  10  in  R01 to R04  again

-These routines work in all angular mode.
-For n = 10 , execution time is about 8 seconds.
-The example above actually returns the polar form of the quaternion  q = 2 + 4 i + 7 j + 10 k