¿Qué tipo de función arcotangente se usó, la de un solo argumento o las famosas atan2(y, x) o arctan2(y, x) con dos argumentos x e y? ¿Qué tipo de aproximación se utilizó?
Lo primero que debes entender es que aunque ARCTAN
se llama en 3 lugares en el código Apolo, en todos los casos se usa para convertir coordenadas rectilíneas (x, y, z) en coordenadas esféricas (r, latitud, longitud).
Describiré como ARCTAN
se usa en la LAT-LONG
subrutina, en el archivo LATITUDE_ LONGITUDE_ SUBROUTINES.agc , aunque el uso es similar en los demás llamadores. El primer paso es calcular gamma =
(líneas 77-82). Luego dividimos x e y cada uno por gamma; x/gamma se almacena en variable global COSTH
e y/gamma se almacena en variable global SINTH
(líneas 83-87). Entonces estamos listos para llamar a la ARCTAN
subrutina (línea 88). Después de que regresa, el resultado se almacena en la variable global LAT
(línea 89). Un conjunto similar de cálculos determina la longitud.
77: DLOAD DSQ
78: ALPHAV
79: PDDL DSQ
80: ALPHAV +2
81:# Page 1237
82: DAD SQRT
83: DMP SL1R
84: GAMRP
85: STODL COSTH # COS(LAT) B-1
86: ALPHAV +4
87: STCALL SINTH # SIN(LAT) B-1
88: ARCTAN
89: STODL LAT # LAT B0
Como atan2 (), ARCTAN
toma dos argumentos. Sin embargo, a diferencia de atan2 (), los argumentos ya deben estar predivididos. En otras palabras, deben estar en el rango de -1 a +1, y sus cuadrados deben sumar 1. Los argumentos se toman de las variables globales COSTH
y SINTH
. Como sugieren los nombres y debido a la división previa, estos argumentos son el coseno y el seno del ángulo que estamos buscando. La mayor parte de la subrutina verifica el signo +/- de los argumentos, ajustando el resultado para el cuadrante apropiado. El cálculo principal se realiza llamando ASIN
con argumento SINTH
(línea 219).
196: # Page 1240
197: # ARCTAN SUBROUTINE
198: #
199: # CALLING SEQUENCE
200: # SIN THETA IN SINTH B-1
201: # COS THETA IN COSTH B-1
202: # CALL ARCTAN
203: #
204: # OUTPUT
205: # ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
206:
207: ARCTAN BOV
208: CLROVFLW
209: CLROVFLW DLOAD DSQ
210: SINTH
211: PDDL DSQ
212: COSTH
213: DAD
214: BZE SQRT
215: ARCTANXX # ATAN=0/0. SET THETA=0
216: BDDV BOV
217: SINTH
218: ATAN=90
219: SR1 ASIN
220: STORE THETA
221: PDDL BMN
222: COSTH
223: NEGCOS
224: DLOAD RVQ
225: NEGCOS DLOAD DCOMP
226: BPL DAD
227: NEGOUT
228: DP1/2
229: ARCTANXX STORE THETA
230: RVQ
231:
232: NEGOUT DSU GOTO
233: DP1/2
234: ARCTANXX
235: ATAN=90 DLOAD SIGN
236: LODP1/4
237: SINTH
238: STORE THETA
239: RVQ
ASIN
es una macro para la ARCSIN
subrutina en el archivo INTERPRETER.agc . A su vez, se calcula a partir del arcocoseno, usando la relación ARCOS(X) = PI/2 - ARCCOS(X). (Líneas 2704-2705. Sí, aunque ya tenemos el coseno almacenado en COSTH
.) ARCCOS
se calcula usando la "aproximación de Hastings" y un polinomio de séptimo grado.
El resultado de cada una de las subrutinas trigonométricas inversas son ángulos en el rango de -1/2 a +1/2. Para convertir a radianes, debes multiplicar por .
Entonces, hay dos argumentos, pero deben dividirse previamente y el resultado debe multiplicarse por .
Aquí puede ver el código fuente de la computadora de orientación del Apolo 11.
En el interior, vea Subrutina para ARCTAN.
¿Responde a tu pregunta?
Urna de pulpo mágico