Code covered by the BSD License  

Highlights from
Understanding the Euler Angles

image thumbnail
from Understanding the Euler Angles by Divahar Jayaraman
This is for visualizing the Euler Angles and better understanding of it

Understanding_Euler_Angles(varargin)
function varargout = Understanding_Euler_Angles(varargin)
% Understanding_Euler_Angles M-file for Understanding_Euler_Angles.fig
%      Understanding_Euler_Angles, by itself, creates a new Understanding_Euler_Angles or raises the existing
%      singleton*.
%
%      H = Understanding_Euler_Angles returns the handle to a new Understanding_Euler_Angles or the handle to
%      the existing singleton*.
%
%      Understanding_Euler_Angles('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in Understanding_Euler_Angles.M with the given input arguments.
%
%      Understanding_Euler_Angles('Property','Value',...) creates a new Understanding_Euler_Angles or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before RotationsGUI1_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to RotationsGUI1_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help Understanding_Euler_Angles

% Last Modified by GUIDE v2.5 01-Oct-2006 23:41:12

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Understanding_Euler_Angles_OpeningFcn, ...
                   'gui_OutputFcn',  @Understanding_Euler_Angles_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before Understanding_Euler_Angles is made visible.
function Understanding_Euler_Angles_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Understanding_Euler_Angles (see VARARGIN)

% Choose default command line output for Understanding_Euler_Angles
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);
axes(handles.axes1)

% nothing=0;
% save TempDat nothing
% delete *.mat

Rotations


% UIWAIT makes Understanding_Euler_Angles wait for user response (see UIRESUME)
% uiwait(handles.Understanding_Euler_Angles);


% --- Outputs from this function are returned to the command line.
function varargout = Understanding_Euler_Angles_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

SS=get(0,'ScreenSize');
x=(SS(3)-800)/2;
y=(SS(4)-544)/2;
set(handles.Understanding_Euler_Angles,'Position',[ x    y   800   544])

set(handles.axes2,'Visible','off')

set(handles.Angle1,'String',  '   ')
set(handles.Angle2,'String',  '   ')
set(handles.Angle3,'String',  '   ')

set(handles.Set1,'Enable','off')
set(handles.Set2,'Enable','off')
set(handles.Set3,'Enable','off')

set(handles.POR1,'Enable','off')
set(handles.POR2,'Enable','off')
set(handles.POR3,'Enable','off')

set(handles.PAR1,'Enable','off')
set(handles.PAR2,'Enable','off')
set(handles.PAR3,'Enable','off')

set(handles.Set0,'Value',1)

set(handles.Set1,'Value',0)
set(handles.Set2,'Value',0)
set(handles.Set3,'Value',0)

set(handles.POR1,'Value',0)
set(handles.POR2,'Value',0)
set(handles.POR3,'Value',0)

set(handles.PAR1,'Value',0)
set(handles.PAR2,'Value',0)
set(handles.PAR3,'Value',0)










% --- Executes on button press in Set0.
function Set0_Callback(hObject, eventdata, handles)
% hObject    handle to Set0 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Set0
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(CoAxes0,'Visible','on')
else
    set(CoAxes0,'Visible','off')
end

% --- Executes on button press in Set1.
function Set1_Callback(hObject, eventdata, handles)
% hObject    handle to Set1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Set1
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(CoAxes1,'Visible','on')
else
    set(CoAxes1,'Visible','off')
end

% --- Executes on button press in Set2.
function Set2_Callback(hObject, eventdata, handles)
% hObject    handle to Set2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Set2

load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(CoAxes2,'Visible','on')
else
    set(CoAxes2,'Visible','off')
end


% --- Executes on button press in Set3.
function Set3_Callback(hObject, eventdata, handles)
% hObject    handle to Set3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Set3

load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(CoAxes3,'Visible','on')
else
    set(CoAxes3,'Visible','off')
end


% --- Executes on selection change in ChooseAxis.
function ChooseAxis_Callback(hObject, eventdata, handles)
% hObject    handle to ChooseAxis (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns ChooseAxis contents as cell array
%        contents{get(hObject,'Value')} returns selected item from ChooseAxis



% --- Executes during object creation, after setting all properties.
function ChooseAxis_CreateFcn(hObject, eventdata, handles)
% hObject    handle to ChooseAxis (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on selection change in ChooseAngle.
function ChooseAngle_Callback(hObject, eventdata, handles)
% hObject    handle to ChooseAngle (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns ChooseAngle contents as cell array
%        contents{get(hObject,'Value')} returns selected item from ChooseAngle


% --- Executes during object creation, after setting all properties.
function ChooseAngle_CreateFcn(hObject, eventdata, handles)
% hObject    handle to ChooseAngle (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end




% --- Executes on button press in RotateView.
function Rotate_Callback(hObject, eventdata, handles)
% hObject    handle to RotateView (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

save HANDLESFILE handles
CAngle = get(handles.ChooseAngle,'Value')*10*pi/180;

load Maxes
load Trans


count=count+1;

ChAxis = get(handles.ChooseAxis,'Value');



if ROT(1)==ChAxis | ROT(2)==ChAxis
    
    m1='    Repeated Sequences ( XYX, XZX, YXY, YZY, ZXZ, ZYZ ) are not allowed !  ';
    m2='                                                                           ';
    m3='             Try Sequences like : XYZ, XZY,YZX, YXZ, ZXY, ZYX              ';
    m4='                                                                           ';
    m5='    Press Yes to RESET   or   No to CONTINUE to next unrepeated rotation   ';
    msg=strvcat(m1,m2,m3,m4,m5);
    button = questdlg(msg,'This Sequence is not allowed !!!');
    
    if strcmp(button,'Yes')==1
        set(handles.Rotate,'Enable','on')
        Understanding_Euler_Angles
        return
    else
        return
    end
end
 
if count==1
%     for 1:3:10
        
    CA='[CoAxes1 CoAxes2 CoAxes3]';
    set(CoAxes1,'Visible','on')
    CA1=copyobj(CoAxes1,gca);
    setangle='handles.Angle1';
    
    set(handles.POR1,'Value',1)
    set(handles.PAR1,'Value',1)
elseif count==2
    CA='[CoAxes2 CoAxes3]';
    set(CoAxes2,'Visible','on')
    CA1=copyobj(CoAxes2,gca);
    setangle='handles.Angle2';

    set(handles.POR2,'Value',1)
    set(handles.PAR2,'Value',1)    

    
elseif count==3
    CA='CoAxes3';
    set(CoAxes3,'Visible','on')
    CA1=copyobj(CoAxes3,gca);
    set(handles.Rotate,'Enable','off')
    setangle='handles.Angle3';
    
    set(handles.POR3,'Value',1) 
    set(handles.PAR3,'Value',1)

end

A1=[1       0              0      ;...
   0    cos(CAngle)  sin(CAngle) ;...
   0   -sin(CAngle)  cos(CAngle) ]';

A2=[cos(CAngle)   0     -sin(CAngle) ;...
     0           1           0      ;...
   sin(CAngle)   0      cos(CAngle) ]';

A3=[ cos(CAngle) sin(CAngle)  0  ;...
  -sin(CAngle) cos(CAngle)  0  ;...
     0         0            1  ]';
    

     
cc=zeros(1,3);  
cc(count)=1;
switch ChAxis
    case 1
        Dir=1;
        
        ca='arc1';
        set(eval(ca),'Visible','on')
        
        set(RotPlane(1),'FaceColor',cc,'Edgecolor',cc)
        set(RotPlane(1),'Visible','on')

        set(eval(setangle),'String',  ['  X Axis  :  ' num2str(CAngle*180/pi)])
        
    
        set(handles.Rotate,'Enable','off')
        for i=1:CAngle*180/pi
            drawnow
            CA2=copyobj(CA1,gca);
            delete(CA1)
            rotate(CA2,Vx,1,[0 0 0])
            ARC(i,:)=copyobj(eval(ca),gca);    
            rotate(ARC(i,:),Vx,i,[0 0 0])
            CA1=copyobj(CA2,gca);
            delete(CA2)  
        end

        delete( eval(ca) )
        set(handles.Rotate,'Enable','on')  

        set(ARC,'FaceColor',cc)
        delete(CA1)
        
        rotate(eval(CA),Vx,CAngle*180/pi,[0 0 0])
  
       
        if strcmp(get(RotPlane(2),'Visible'),'off')==1
            rotate(RotPlane(2),Vx,CAngle*180/pi,[0 0 0])
            rotate(arc2,Vx,CAngle*180/pi,[0 0 0])
        end
        if strcmp(get(RotPlane(3),'Visible'),'off')==1
            rotate(RotPlane(3),Vx,CAngle*180/pi,[0 0 0])
            rotate(arc3,Vx,CAngle*180/pi,[0 0 0])
        end
   
      
        Anow=A1;
    case 2
        Dir=2;
        ca='arc2';
        set(eval(ca),'Visible','on')
        
        set(RotPlane(2),'FaceColor',cc,'EdgeColor',cc)
        set(RotPlane(2),'Visible','on')

        
        
        set(eval(setangle),'String',  ['  Y Axis  :  ' num2str(CAngle*180/pi)])
        
        set(handles.Rotate,'Enable','off')
        for i=1:CAngle*180/pi
            drawnow
            CA2=copyobj(CA1,gca);
            delete(CA1)
            rotate(CA2,Vy,1,[0 0 0])
            ARC(i,:)=copyobj(eval(ca),gca);    
            rotate(ARC(i,:),Vy,i,[0 0 0])
            CA1=copyobj(CA2,gca);
            delete(CA2)  
        end

        delete( eval(ca) )
        set(handles.Rotate,'Enable','on')  

        set(ARC,'FaceColor',cc)
        delete(CA1)

        rotate(eval(CA),Vy,CAngle*180/pi,[0 0 0])

        if strcmp(get(RotPlane(3),'Visible'),'off')==1
            rotate(RotPlane(3),Vy,CAngle*180/pi,[0 0 0])
            rotate(arc3,Vy,CAngle*180/pi,[0 0 0])
            
        end
        if strcmp(get(RotPlane(1),'Visible'),'off')==1
            rotate(RotPlane(1),Vy,CAngle*180/pi,[0 0 0])
            rotate(arc1,Vy,CAngle*180/pi,[0 0 0])
        end

               
        Anow=A2;
    case 3
        Dir=3;
        
        ca='arc3';
        
        set(eval(ca),'Visible','on')
        
        set(RotPlane(3),'FaceColor',cc,'Edgecolor',cc)
        set(RotPlane(3),'Visible','on')

        set(eval(setangle),'String',  ['  Z Axis  :  ' num2str(CAngle*180/pi)])
        
  
        set(handles.Rotate,'Enable','off')
        for i=1:CAngle*180/pi
            drawnow
            CA2=copyobj(CA1,gca);
            delete(CA1)
            rotate(CA2,Vz,1,[0 0 0])
            ARC(i,:)=copyobj(eval(ca),gca);    
            rotate(ARC(i,:),Vz,i,[0 0 0])
            CA1=copyobj(CA2,gca);
            delete(CA2)  
        end

        delete( eval(ca) )
        set(handles.Rotate,'Enable','on')  

        set(ARC,'FaceColor',cc)
        delete(CA1)
        
        rotate(eval(CA),Vz,CAngle*180/pi,[0 0 0])
        
        if strcmp(get(RotPlane(1),'Visible'),'off')==1
            rotate(RotPlane(1),Vz,CAngle*180/pi,[0 0 0])
            rotate(arc1,Vz,CAngle*180/pi,[0 0 0])
        end
        
        if strcmp(get(RotPlane(2),'Visible'),'off')==1
            rotate(RotPlane(2),Vz,CAngle*180/pi,[0 0 0])
            rotate(arc2,Vz,CAngle*180/pi,[0 0 0])
        end
        
%         if strcmp(get(RotPlane(2),'Visible'),'off')==1
%             rotate(arc2,Vz,CAngle*180/pi,[0 0 0])
%         end
        
       
        Anow=A3;
end

switch count
   case 1
       ROT(1)=Dir;
       Vx=Anow*[1;0;0];        
       Vy=Anow*[0;1;0];
       Vz=Anow*[0;0;1];
       set(CoAxes1,'Visible','on')
       set(handles.Set1,'Value',1)
       set(handles.Set1,'Enable','on')
       
   case 2
       ROT(2)=Dir;
       set(CoAxes2,'Visible','on')
       set(handles.Set2,'Value',1)
       set(handles.Set2,'Enable','on')
       
       Vx=Aprev*Anow*[1;0;0];        
       Vy=Aprev*Anow*[0;1;0];
       Vz=Aprev*Anow*[0;0;1];  
   case 3
       ROT(3)=Dir;
       set(CoAxes3,'Visible','on')
       set(handles.Set3,'Value',1) 
       set(handles.Set3,'Enable','on')
       set(handles.Rotate,'Enable','off')
%        Vx=Aprev*Anow*[1;0;0];        
%        Vy=Aprev*Anow*[0;1;0];
%        Vz=Aprev*Anow*[0;0;1];  % But Not needed Since the rotation is
%        over and no more transformation is neede.
end

Aprev=Anow;

if count==1
    ARC1=copyobj(ARC,gca);
    delete(ARC)
    set(handles.POR1,'Enable','on')
    set(handles.PAR1,'Enable','on')
elseif count==2
    ARC2=copyobj(ARC,gca);
    delete(ARC)
    set(handles.POR2,'Enable','on')
    set(handles.PAR2,'Enable','on')
elseif count==3
    ARC3=copyobj(ARC,gca);
    delete(ARC)
    set(handles.POR3,'Enable','on')
    set(handles.PAR3,'Enable','on')
end

save Trans A1 A2 A3 Aprev Vx Vy Vz count ROT ARC1 ARC2 ARC3 arc1 arc2 arc3



% --- Executes on button press in RESET.
function RESET_Callback(hObject, eventdata, handles)
% hObject    handle to RESET (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.Rotate,'Enable','on')
Understanding_Euler_Angles


% --- Executes on button press in POR1.
function POR1_Callback(hObject, eventdata, handles)
% hObject    handle to POR1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of POR1


load Trans
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(RotPlane(ROT(1)),'Visible','on')
else
    set(RotPlane(ROT(1)),'Visible','off')
end


% --- Executes on button press in POR2.
function POR2_Callback(hObject, eventdata, handles)
% hObject    handle to POR2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of POR2

load Trans
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(RotPlane(ROT(2)),'Visible','on')
else
    set(RotPlane(ROT(2)),'Visible','off')
end



% --- Executes on button press in POR3.
function POR3_Callback(hObject, eventdata, handles)
% hObject    handle to POR3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of POR3

load Trans
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(RotPlane(ROT(3)),'Visible','on')
else
    set(RotPlane(ROT(3)),'Visible','off')
end



% --- Executes on button press in Iso.
function Iso_Callback(hObject, eventdata, handles)
% hObject    handle to Iso (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
load Maxes
view([1 1 1])
camlookat(BaseSphere)
camzoom(1.5)


% --- Executes on button press in XY.
function XY_Callback(hObject, eventdata, handles)
% hObject    handle to XY (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
load Maxes
view(0,90)
camlookat(BaseSphere)
camzoom(1.3)



% --- Executes on button press in YZ.
function YZ_Callback(hObject, eventdata, handles)
% hObject    handle to YZ (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
load Maxes
view(90,0)
camlookat(BaseSphere)
camzoom(1.3)



% --- Executes on button press in ZX.
function ZX_Callback(hObject, eventdata, handles)
% hObject    handle to ZX (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
load Maxes
view(0,0)
camlookat(BaseSphere)
camzoom(1.3)

% --- Executes on button press in RotateView.
function RotateView_Callback(hObject, eventdata, handles)
% hObject    handle to RotateView (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of RotateView
load Maxes
rotate3d

function Angle1_Callback(hObject, eventdata, handles)
% hObject    handle to Angle1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Angle1 as text
%        str2double(get(hObject,'String')) returns contents of Angle1 as a double


% --- Executes during object creation, after setting all properties.
function Angle1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Angle1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


function Angle2_Callback(hObject, eventdata, handles)
% hObject    handle to Angle2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Angle2 as text
%        str2double(get(hObject,'String')) returns contents of Angle2 as a double


% --- Executes during object creation, after setting all properties.
function Angle2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Angle2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function Angle3_Callback(hObject, eventdata, handles)
% hObject    handle to Angle3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Angle3 as text
%        str2double(get(hObject,'String')) returns contents of Angle3 as a double


% --- Executes during object creation, after setting all properties.
function Angle3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Angle3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end




% --- Executes on button press in PAR1.
function PAR1_Callback(hObject, eventdata, handles)
% hObject    handle to PAR1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of PAR1

load Trans
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(ARC1,'Visible','on')
else
    set(ARC1,'Visible','off')
end



% --- Executes on button press in PAR2.
function PAR2_Callback(hObject, eventdata, handles)
% hObject    handle to PAR2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of PAR2

load Trans
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(ARC2,'Visible','on')
else
    set(ARC2,'Visible','off')
end


% --- Executes on button press in PAR3.
function PAR3_Callback(hObject, eventdata, handles)
% hObject    handle to PAR3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of PAR3

load Trans
load Maxes
if (get(hObject,'Value') == get(hObject,'Max'))
    set(ARC3,'Visible','on')
else
    set(ARC3,'Visible','off')
end


% --- Executes on button press in Author.
function Author_Callback(hObject, eventdata, handles)
% hObject    handle to Author (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Author

state=get(hObject,'Value');
if state==get(hObject,'Max')
    B = imread('Banner.jpg');
    set(handles.axes2,'Visible','on')
    axes(handles.axes2)
    B=image(B);
    
    save('ha','B')
%     save Banner B
%     guidata(Banner,handles)
    axis off
    axes(handles.axes1)
elseif state==get(hObject,'Min')
    load ha;
    set(B,'Visible','off')
    set(handles.axes2,'Visible','off')
    axes(handles.axes1)
    
end



function whileclosing(hObject, eventdata, handles)

clc
clear
closereq

aa=0;

save ha aa
save HANDLESFILE aa
save Maxes aa
save Trans aa

delete ha.mat HANDLESFILE.mat Maxes.mat Trans.mat

msg=['  Please Review in mathworks.com or Send your Feedbacks to author   ';...
     '                                                                    ';...
     '     j.divahar@yahoo.com / j.divahar@gmail.com                      ';...
     '                                                                    ';...
     '     HomePage: http://four.fsphost.com/jdivahar                     '];
    

button = msgbox(msg,'Thank you For Trying !');

Contact us at files@mathworks.com