Funcion obtener rotacion instantanea a partir de rotaciones Euler y angulos de Euler. Scilab


Funcion para calcular la rotacion instantanea a partir de la  rotacion de precesion e, rotacion de nutacion re2, rotacion propia re3 y los angulos de precesion a1, nutacion a2  con Scilab:

function [w]=rotacioninstantanea(a1,a2,re1,re2,re3)
r=[re1 re2 re3]
b1=[0 cos(a1) sin(a1)*sin(a2); 0 sin(a1) -cos(a1)*sin(a2); 1 0 cos(a2)]
w=b1*r'
endfunction

Ejemplo con Scilab

-->function [w]=rotacioninstantanea(a1,a2,re1,re2,re3)
-->r=[re1 re2 re3]
-->b1=[0 cos(a1) sin(a1)*sin(a2); 0 sin(a1) -cos(a1)*sin(a2); 1 0 cos(a2)]
-->w=b1*r'
-->endfunction
-->rotacioninstantanea(%pi/2,%pi/4,2,2,1.4142136)
 ans  =

    1.
    2.
    3.

Funcion obtener rotaciones Euler con rotacion instantanea. Scilab


Funcion para calcular las rotaciones de Euler rotacion de precesion, rotacion de nutacion y rotacion propia a partir de la rotacion instantanea (wx,wy,wz) y los angulos de precesion a1, nutacion a2  con Scilab:

function [r]=rotacioneseuler(wx,wy,wz,a1,a2)
w=[wx wy wz]
b1=[0 cos(a1) sin(a1)*sin(a2); 0 sin(a1) -cos(a1)*sin(a2); 1 0 cos(a2)]
r=inv(b1)*w'
endfunction

Ejemplo con Scilab

-->function [r]=rotacioneseuler(wx,wy,wz,a1,a2)
-->w=[wx wy wz]
-->b1=[0 cos(a1) sin(a1)*sin(a2); 0 sin(a1) -cos(a1)*sin(a2); 1 0 cos(a2)]
-->r=inv(b1)*w'
-->endfunction
-->rotacioneseuler(1,2,3,%pi/2,%pi/4)
 ans  =

    2.      
    2.      
    1.4142136

Funcion producto escalar vectores. Scilab


Funcion para calcular el producto escalar de dos vectores:

function [x]=prodescalarvectores(a1, b1)
    x=a1*b1'
endfunction

 Ejemplo de utilizacion en Scilab con los vectores (1,1,1) y (2,3,5):

-->function [x]=prodescalarvectores(a1, b1)
-->    x=a1*b1'
-->endfunction
-->prodescalarvectores([1 2 3],[1 20 4])
 ans  =

    53.

Funcion angulo entre vectores. Scilab


Funcion en Scilab para calcular el angulo entres dos vectores, en radianes y en grados:

 function [x,y]=angulovectores(a1, b1)
 x=acos(a1*b1'/(norm(a1)*norm(b1)))
 y=180/%pi*x 
endfunction 

 Ejemplo de utilizacion en Scilab con los vectores (1,1,1) y (2,3,5):

 -->function [x,y]=angulovectores(a1, b1)
--> x=acos(a1*b1'/(norm(a1)*norm(b1)))
--> y=180/%pi*x
 -->endfunction
 -->[radianes,grados]=angulovectores([1 1 1], [2 3 5])
 grados = 20.514127
 radianes = 0.3580391