Spherical Triangles for the HP-41
Overview
-This program finds the sides and the angles of a spherical triangle.
-It works in all angular modes but angles must be entered as decimals.
-It conforms to the standard triangle notation ( A opposite a ... etc
... )
Formulae:
sin a / sin A = sin b / sin B = sin c / sin
C
cos a = cos b cos c + sin b sin c cos A
cos A = -cos B cos C + sin B sin C cos a
c = arctan ( cos A tan b ) + arctan ( cos
B tan a ) ( modulo 180° )
-This last formula is used in cases n°5 and n°6.
-Other formulae can be used, for example:
tan c/2 = ( tan (a-b)/2
).( sin (A+B)/2 ) / ( sin (A-B)/2 )
( F1 )
tan c/2 = ( tan (a+b)/2
).( cos (A+B)/2 ) / ( cos (A-B)/2 )
( F2 )
but ( F1 ) cannot be applied if a = b & A = B and ( F2 ) doesn't work if a + b = A + B = 180°
A
*
*
* b
c *
*
with A + B + C > 180°
*
*
B *
* * * *
* * C
a
Program Listing
Data Registers: R00: temp
R01 = a R04 =
A
R02 = b R05 =
B
R03 = c R06 =
C
Flags: /
Subroutines: /
01 LBL "SABC"
02 GTO IND T 03 LBL 00 04 STO 04 05 RDN 06 STO 05 07 X<>Y 08 STO 06 09 R^ 10 XEQ 11 11 STO 01 12 LBL 07 13 RCL 04 14 RCL 06 15 RCL 05 16 XEQ 11 17 STO 02 18 RCL 04 19 RCL 05 20 RCL 06 21 XEQ 11 22 STO 03 23 RCL 02 24 RCL 01 25 RTN 26 LBL 01 27 STO 01 28 RDN 29 STO 05 30 X<>Y 31 STO 06 32 R^ 33 CHS 34 XEQ 12 35 STO 04 36 XEQ 07 37 CLX |
38 RCL 04
39 RTN 40 LBL 02 41 STO 01 42 X<>Y 43 STO 02 44 X<> Z 45 STO 06 46 XEQ 12 47 STO 03 48 XEQ 08 49 RCL 03 50 RCL 05 51 RCL 04 52 RTN 53 LBL 03 54 STO 01 55 X<>Y 56 STO 02 57 X<> Z 58 STO 03 59 CHS 60 XEQ 11 61 STO 06 62 LBL 08 63 RCL 01 64 RCL 03 65 RCL 02 66 CHS 67 XEQ 11 68 STO 05 69 RCL 02 70 RCL 03 71 RCL 01 72 CHS 73 XEQ 11 74 STO 04 |
75 RCL 06
76 RCL 05 77 RCL 04 78 RTN 79 LBL 04 80 STO 01 81 SIN 82 X<>Y 83 STO 04 84 SIN 85 / 86 X<>Y 87 STO 05 88 SIN 89 * 90 ASIN 91 LBL 09 92 STO 02 93 XEQ 14 94 RCL 02 95 FC?C 25 96 CLST 97 RTN 98 RCL 02 99 COS 100 CHS 101 ACOS 102 GTO 09 103 LBL 05 104 STO 01 105 SIN 106 X<>Y 107 STO 02 108 SIN 109 / 110 X<>Y 111 STO 05 |
112 SIN
113 * 114 ASIN 115 LBL 10 116 STO 04 117 XEQ 14 118 RCL 04 119 FC?C 25 120 CLST 121 RTN 122 RCL 04 123 COS 124 CHS 125 ACOS 126 GTO 10 127 LBL 11 128 XEQ 13 129 + 130 X<>Y 131 / 132 ACOS 133 RTN 134 LBL 12 135 XEQ 13 136 RCL Z 137 * 138 + 139 ACOS 140 RTN 141 LBL 13 142 STO 00 143 SIGN 144 P-R 145 X<> Z 146 1 147 P-R 148 ST* T |
149 RDN
150 * 151 ABS 152 X<>Y 153 RCL 00 154 COS 155 RTN 156 LBL 14 157 SF 25 158 RCL 02 159 TAN 160 RCL 04 161 COS 162 * 163 ATAN 164 RCL 01 165 TAN 166 RCL 05 167 COS 168 * 169 ATAN 170 + 171 1 172 CHS 173 ACOS 174 MOD 175 STO 03 176 RCL 01 177 RCL 02 178 RCL 03 179 CHS 180 XEQ 11 181 STO 06 182 RCL03 183 END |
( 233 bytes / SIZE 007 )
-Execution time ~ 8 seconds
1°) First case: the 3 angles are known
STACK | INPUTS | OUTPUTS |
T | 0 | / |
Z | C | c |
Y | B | b |
X | A | a |
Example: A = 50° , B = 70°
, C = 100°
0 ENTER^
100 ENTER^
70 ENTER^
50 XEQ "SABC" >>>> a = 50.9193°
RDN b = 72.2173° RDN c =
86.3204°
2°) Second case: 1 side and the 2 adjacent angles
are known
STACK | INPUTS | OUTPUTS |
T | 1 | / |
Z | C | c |
Y | B | b |
X | a | A |
Example: a = 30° , B = 50°
, C = 100°
1 ENTER^
100 ENTER^
50 ENTER^
30 XEQ "SABC" >>>> A = 40.0971°
RDN b = 36.4896° RDN c =
49.8627°
3°) Third case: 2 sides and the included angle
are known
STACK | INPUTS | OUTPUTS |
T | 2 | / |
Z | C | c |
Y | b | B |
X | a | A |
Example: a = 30°
b = 40° C = 80°
2 ENTER^
80 ENTER^
40 ENTER^
30 XEQ "SABC" >>>> A = 45.1309°
RDN B = 65.6596° RDN c =
44.0096°
4°) Fourth case: 3 known sides
STACK | INPUTS | OUTPUTS |
T | 3 | / |
Z | c | C |
Y | b | B |
X | a | A |
Example: a
= 30° b = 40° c = 50°
3 ENTER^
50 ENTER^
40 ENTER^
30 XEQ "SABC" >>>>
A = 40.6441° RDN B = 56.8634°
RDN C = 93.6796°
5°) Fifth case: 1 side , the opposite angle
and another angle are known
STACK | INPUTS | OUTPUTS1 | OUTPUTS2 |
T | 4 | / | / |
Z | B | C | C' |
Y | A | c | c' |
X | a | b | b' |
Example: a = 30°
A = 40° B = 60°
4 ENTER^
60 ENTER^
40 ENTER^
30 XEQ "SABC" >>>> b
= 42.3493° RDN c =
51.0269° RDN C = 91.8854°
R/S
>>>> b' = 137.6507° RDN
c' = 161.1774° RDN C' = 155.4947°
-Here, we have 2 solutions.
-If one of the solutions must be rejected, the stack is cleared
( X = Y = Z = T = 0 )
-For instance a = 30° b = 110° B = 40°
4 ENTER^
40 ENTER^
110 ENTER^
30 XEQ "SABC" >>>> b = 20.0000°
RDN c = 16.7627° RDN C =
32.8220°
R/S >>>>
0 RDN 0 RDN 0
-Thus , there is only one solution.
6°) Sixth case: 2 sides and one adjacent angle
known
STACK | INPUTS | OUTPUTS1 | OUTPUTS2 |
T | 5 | / | / |
Z | B | C | C' |
Y | b | c | c' |
X | a | A | A' |
Example: a = 100° b
= 110° B = 120°
5 ENTER^
120 ENTER^
110 ENTER^
100 XEQ "SABC" >>>>
A = 65.1763° RDN c = 21.4983°
RDN C = 19.7395°
R/S
>>>> A' = 114.8237° RDN c' = 119.6509°
RDN C' = 126.7814°
-In this example, there are also 2 solutions.
-If one of the solutions must be rejected, the stack is cleared
( X = Y = Z = T = 0 )
-In cases 1-2-3-4 , T-register input = the number of known sides.
-In cases 5-6 , the results are not very accurate if all angles are
near 90°