image thumbnail
from Eular angles GUI by Maxim Vedenyov
Eular angles visualization and connection with axis-angle rotation.

quat_rule(ha)
function quat_rule(ha)

%set(ha,'UserData',[nx,ny,nz,alpha]);
nxyza=get(ha,'UserData');
nx=nxyza(1);
ny=nxyza(2);
nz=nxyza(3);
alpha=nxyza(4);


hac=get(ha,'children');
for hacc=1:length(hac)
    if ishandle(hac(hacc))
        delete(hac(hacc));
    end
end
 
% test string
status=text('parent',ha,'Position',[0,0.68],'Interpreter','tex','String','Load...','HorizontalAlignment','left','VerticalAlignment','bottom');
ttsz=get(status,'Extent');
tsz=165*ttsz(3);
%tsz=100*ttsz(3);
drawnow;
delete(status);

xsh=-0.1;

status=text('parent',ha,'Position',[xsh,1.07],'Interpreter','latex','String','','HorizontalAlignment','left','VerticalAlignment','top');

%get(status,'FontSize'); % =10

%ssz(4)  % =768
%10*ssz(4)/768
set(status,'FontUnits','points','FontSize',tsz);

sa={};

sa={sa{:},'Quaternion form'};

sa={sa{:},' '};

q1=cos(alpha/2);
q2=nx*sin(alpha/2);
q3=ny*sin(alpha/2);
q4=nz*sin(alpha/2);
sc=num2str(q1);
si=num2str(q2);
sj=num2str(q3);
sk=num2str(q4);
if si(1)~='-'
    si=['+' si];
end

if sj(1)~='-'
    sj=['+' sj];
end

if sk(1)~='-'
    sk=['+' sk];
end
sa={sa{:},['$q = \cos \frac {\alpha} {2} + \sin \frac {\alpha} {2} n_x i + \sin \frac {\alpha} {2} n_y j + \sin \frac {\alpha} {2} n_z k=$']};


sa={sa{:},' '};

sa={sa{:},['$=' sc  si 'i' sj 'j' sk 'k' '$']};

sa={sa{:},' '};

sa={sa{:},['see quaternion calculator']};



set(status,'Interpreter','latex','String',sa);



stex=get(status,'Extent');



drawnow;
%correct font size one more time:
exe=get(status,'Extent');
dy=1-exe(4);
fzm=1/dy; % font zoom factor
tsz=fzm*tsz; % zoom font
set(status,'Position',[xsh,1.07],'fontsize',tsz);

drawnow;

Contact us at files@mathworks.com