Los cuaternios se representan en esta biblioteca como vectores de 3 elementos correspondientes con la parte vectorial de cuaternios. Como los cuaternios para rotaciones tienen norma unidad y representan la misma transformación que su opuesto, la parte escalar del cuaternio se asume positiva y no se almacena. En todos los cálculos, si un cuaternio resultante tiene parte escalar negativa, se almacena la parte vectorial opuesta. Así, la parte escalar siempre puede deducirse de la parte vectorial, aunque con precisión limitada. Así pues, el cuaternio conjugado, se obtiene simplemente con la tecla +/-
.
La etiqueta Q
es la inicial de cuaternio en inglés. Además, la etiqueta eQN está formado por las letras primera y última de cuaternio en inglés.
Dirección | Nombre |
---|---|
Q002 | HELP |
Q003 | Q([Y],θx) |
Q004 | ANGLE(Q) |
Q005 | SLERP ZY |
Q006 | APPLY Q→y |
Q007 | Qy∘Qx |
Muestra la lista de funciones y sus direcciones.
Crea un cuaternio en el formato interno de la biblioteca a partir de un par de rotación vector-ángulo. En el registro Y
se debe colocar un vector con la dirección del cuaternio deseado y en X
se debe poner el ángulo de giro de la rotación. La pila RPN desciende una vez, el cuaternio se coloca en X
y el vector normalizado se coloca en LASTx
.
Registro | Antes | Después |
---|---|---|
T | t | t |
Z | z | t |
Y | [v] | z |
X | θ | Q |
L | l | [v]/|[v]| |
Extrae el ángulo representado por el cuaternio en X
, que se coloca en LASTx
. Para obtener la parte escalar del cuaternio, se deberá aplicar el coseno a este ángulo dividido entre dos.
Registro | Antes | Después |
---|---|---|
T | t | t |
Z | z | z |
Y | y | y |
X | Q | θ |
L | l | Q |
Interpolación lineal esférica, con el primer cuaternio en Z
, el segundo en Y
y el parámetro 0<tₛ<1
en X
.
Registro | Antes | Después |
---|---|---|
T | t | t |
Z | Qz | Qz |
Y | Qy | Qy |
X | tₛ | Qz∘(Qz⁻¹∘Qy)ᵗₛ |
L | l | tₛ |
Calcula el valor del vector Y
tras rotarlo según el cuaternio en X
, que se coloca en LASTx
después de la operación: x=Q∘y∘conj(Q)
La columna ‘durante’ indica el contenido de los registros durante la ejecución de la ecuación que calcula el vector rotado.
Registro | Antes | Después | Durante |
---|---|---|---|
T | t | t | qw |
Z | z | t | Qw |
Y | [y] | z | P |
X | Q | Q∘[0,y]∘Q | P×Q |
L | l | Q | Q |
Composición de los cuaternios de rotación situados en Y
y en X
.
Registro | Antes | Después |
---|---|---|
T | t | t |
Z | z | z |
Y | Qy | y |
X | Qx | Qy∘Qx |
L | l | Qx |
Q001 LBL Q Q002 GTO Q010 Q003 GTO Q022 Q004 GTO Q017 Q005 GTO Q070 Q006 GTO Q055 Q007 GTO Q042 HELP: Q008 SF 10 Q009 HELP QUATERNNS Q010 PSE Q011 Q003 Q([Y],θx) Q012 Q004 θ Q013 Q005 SLERP ZYᵗ :Esta t está en constants>>>atm Q014 Q006 APPLY Q→y Q015 Q007 Qy∘Qx Q016 RTN ANGLE(Q): Q017 ABS Q018 R↓ Q019 CF 10 Q020 2×ASIN(REGT) Q021 RTN Q([Y],θx): Q022 R↑ Q023 XEQ J007 Q024 2 Q025 ÷ Q026 SIN Q027 LASTx Q028 COS Q029 SGN Q030 x<>y Q031 × Q032 x=0? Q033 XEQ J003 Q034 x<>y Q035 ENTER Q036 ABS Q037 ÷ Q038 XEQ J004 Q039 R↓ Q040 × Q041 RTN Qy∘Qx: Q042 R↓ Q043 R↓ Q044 XEQ J007 Q045 XEQ J007 Q046 XEQ P004 Q047 COS(ASIN(ABS(REGY))) Q048 COS(ASIN(ABS(LASTx))) Q049 SGN(REGY×REGX-REGT×LASTx)×(REGZ+REGY×LASTx+REGX×REGT) Q050 XEQ J004 Q051 ENTER Q052 XEQ J004 Q053 R↑ Q054 RTN APPLY Q→y: Q055 R↓ Q056 R↓ Q057 XEQ J007 Q058 XEQ J007 Q059 ENTER Q060 R↓ Q061 COS(ASIN(ABS(REGT))) Q062 R↓ Q063 XEQ P004 Q064 2×(REGY×LASTx)×LASTx-2×REGT×REGX+(2×SQ(REGT)-1)×REGY Q065 XEQ J004 Q066 ENTER Q067 XEQ J004 Q068 R↑ Q069 RTN SLERP (Z,Y,x): Q070 R↑ Q071 XEQ J007 Q072 ACOS(SQRT((1-SQ(ABS(REGZ)))×(1-SQ(ABS(REGY))))+REGZ×REGY) Q073 R↓ Q074 (SIN((1-REGX)×REGT)×REGZ+SIN(REGX×REGT)×REGY)÷SIN(REGT) Q075 x<>y Q076 ABS Q077 R↓ Q078 XEQ J004 Q079 R↓ Q080 RTN Longitud 610