function euler_q_covariance_check % @see misc.tex 5.2.1 lambda=rand*(2*pi)/2; phi=(rand*pi-(pi/2))/2; alpha=rand*(2*pi)/2; cl=cos(lambda); cp=cos(phi); ca=cos(alpha); sl=sin(lambda); sp=sin(phi); sa=sin(alpha); q0=cl*cp*ca-sl*cp*sa; q1=-sl*sp*ca+cl*sp*sa; q2=cl*sp*ca+sl*sp*sa; q3=sl*cp*ca+cl*cp*sa; q0s=cl*cp*ca+sl*cp*sa; q1s=-sl*sp*ca-cl*sp*sa; q2s=cl*sp*ca-sl*sp*sa; q3s=sl*cp*ca-cl*cp*sa; M_lp=[-q3 -q2s; -q2 -q3s; q1 q0s; q0 q1s]; M_lp'*M_lp [1 0; 0 1] M_u=[-q1 -q2 -q3; q0 q3 -q2; -q3 q0 q1; q2 -q1 q0]; M_lp'*M_u [0 0 1; -sl*cl*2 cl*cl-sl*sl 0] % @see misc.tex 5.2.2 psi=rand*(2*pi)/2; theta=(rand*pi-(pi/2))/2; phi=rand*(2*pi)/2; cps=cos(psi); ct=cos(theta); cph=cos(phi); sps=sin(psi); st=sin(theta); sph=sin(phi); cps2=cps*cps; ct2=ct*ct; cph2=cph*cph; sps2=sps*sps; st2=st*st; sph2=sph*sph; scps=sps*cps; sct=st*ct; scph=sph*cph; q0=cps*ct*cph+sps*st*sph; q1=cps*ct*sph-sps*st*cph; q2=cps*st*cph+sps*ct*sph; q3=sps*ct*cph-cps*st*sph; q0s=cps*ct*cph-sps*st*sph; q1s=cps*ct*sph+sps*st*cph; q2s=cps*st*cph-sps*ct*sph; q3s=sps*ct*cph+cps*st*sph; M_ptp=[-q3 -q2s -q1; -q2 q3s q0; q1 q0s q3; q0 -q1s -q2]; M_ptp'*M_ptp [1 -2*((cps2*st2+sps2*ct2)*scph+scps*sct) -2*sct; -2*((cps2*st2+sps2*ct2)*scph+scps*sct) 1 2*(sct*scph+scps*(ct2*cph2+st2*sph2)); -2*sct 2*(sct*scph+scps*(ct2*cph2+st2*sph2)) 1] M_u=[-q1 -q2 -q3; q0 q3 -q2; -q3 q0 q1; q2 -q1 q0]; M_ptp'*M_u [0 0 1; 2*(-scps*(ct2*sph2+st2*cph2)+sct*scph) (cps2*st2+sps2*ct2)*(cph2-sph2)+(cps2*ct2-sps2*st2) -2*((cps2*st2+sps2*ct2)*scph+scps*sct); (cps2-sps2)*(ct2-st2) 2*scps*(ct2-st2) -2*sct]