diff --git a/ProgramFiles/Animation/animate_locomotor.m b/ProgramFiles/Animation/animate_locomotor.m index 282b66c..11ddd58 100644 --- a/ProgramFiles/Animation/animate_locomotor.m +++ b/ProgramFiles/Animation/animate_locomotor.m @@ -134,12 +134,12 @@ function animate_locomotor(export,info_needed) % Create lists to iterate along for shape space axis creation, and then % trim out movies that aren't being made - fignums = [171; 172; 173; 181; 182; 183]; + fignums = [171; 172; 173; 181; 182; 183; 191]; fignums(~export_list(2:end)) = []; % Name the plots to draw into those windows, and trim them to just the % plots being made - fignames = {'CCF X';'CCF Y';'CCF Theta'; 'Avec X';'Avec Y';'Avec Theta'}; + fignames = {'CCF X';'CCF Y';'CCF Theta'; 'Avec X';'Avec Y';'Avec Theta'; 'Illustrate Shape Space'}; if strcmp(info_needed.Coordinates,'minperturbation_coords') fignamessuffix = ' min. perturbation coords'; @@ -152,7 +152,7 @@ function animate_locomotor(export,info_needed) %%%%% % Internal names used by sys_draw - figinternal = {'X';'Y';'T';'X';'Y';'T'}; + figinternal = {'X';'Y';'T';'X';'Y';'T';''}; if strcmp(info_needed.Coordinates,'minperturbation_coords') figinternalsuffix = 'opt'; else @@ -164,7 +164,7 @@ function animate_locomotor(export,info_needed) %%%%%% % Category of plots to make - figcategory = {'CCF';'CCF';'CCF';'vfield';'vfield';'vfield'}; + figcategory = {'CCF';'CCF';'CCF';'vfield';'vfield';'vfield';'ShapeSpace'}; figcategory(~export_list(2:end)) = []; %%%%%% @@ -224,7 +224,11 @@ function animate_locomotor(export,info_needed) % Call the drawing function for idx = 1:numel(plot_info) - hh(idx,1) = absolute_feval(underlying_function{idx},s,[],plot_info(idx),[],'null',resolution); + if strcmp(plot_info(idx).category, 'ShapeSpace') + hh(idx,1) = feval([plot_info(idx).category '_draw'],s,[],plot_info(idx),system_name,'null',resolution); + else + hh(idx,1) = absolute_feval(underlying_function{idx},s,[],plot_info(idx),[],'null',resolution); + end end % Remove click callbacks on axes created diff --git a/ProgramFiles/GaitOptimization/optimalgaitgenerator_fcns/se2exp.m b/ProgramFiles/GaitOptimization/optimalgaitgenerator_fcns/se2exp.m index 2ff1984..6d37bd1 100644 --- a/ProgramFiles/GaitOptimization/optimalgaitgenerator_fcns/se2exp.m +++ b/ProgramFiles/GaitOptimization/optimalgaitgenerator_fcns/se2exp.m @@ -12,7 +12,7 @@ z_theta = xi(3); - z_xy = 1/z_theta * [sin(z_theta), 1-cos(z_theta); cos(z_theta)-1, sin(z_theta)] * xi(1:2); + z_xy = 1/z_theta * [sin(z_theta), -1+cos(z_theta); 1-cos(z_theta), sin(z_theta)] * xi(1:2); expXi = [ [cos(z_theta), -sin(z_theta); sin(z_theta), cos(z_theta)], z_xy; 0 0 1]; diff --git a/ProgramFiles/sys_draw_fcns/ShapeSpace_draw.m b/ProgramFiles/sys_draw_fcns/ShapeSpace_draw.m index 2a0520b..8bc5cab 100644 --- a/ProgramFiles/sys_draw_fcns/ShapeSpace_draw.m +++ b/ProgramFiles/sys_draw_fcns/ShapeSpace_draw.m @@ -61,5 +61,10 @@ end + %Label the axes + label_shapespace_axes(plot_info.axes,[],plot_info.stretch); + + %Set the tic marks + set(plot_info.axes,'FontSize',30,'FontName','Helvetica') end diff --git a/ProgramFiles/sysplotter_gui_fcns/animatebutton_gui2_Callback.m b/ProgramFiles/sysplotter_gui_fcns/animatebutton_gui2_Callback.m index 2e88542..84ca63d 100755 --- a/ProgramFiles/sysplotter_gui_fcns/animatebutton_gui2_Callback.m +++ b/ProgramFiles/sysplotter_gui_fcns/animatebutton_gui2_Callback.m @@ -30,6 +30,8 @@ function animatebutton_gui2_Callback(hObject, eventdata, handles) info_needed.Movies.vfieldx = get(handles.checkbox_vfieldx_movie,'value'); info_needed.Movies.vfieldy = get(handles.checkbox_vfieldy_movie,'value'); info_needed.Movies.vfieldtheta = get(handles.checkbox_vfieldtheta_movie,'value'); +% +info_needed.Movies.illustrateShapeSpace = get(handles.checkbox_illustrate_shape_space,'value'); % Get the selected system coordinates info_needed.Coordinates = get(findobj(handles.coordinate_selector,'Value',1),'Tag'); diff --git a/ProgramFiles/sysplotter_gui_fcns/animation_gui.fig b/ProgramFiles/sysplotter_gui_fcns/animation_gui.fig index 95bee1c..4cb4ce7 100755 Binary files a/ProgramFiles/sysplotter_gui_fcns/animation_gui.fig and b/ProgramFiles/sysplotter_gui_fcns/animation_gui.fig differ diff --git a/ProgramFiles/sysplotter_gui_fcns/animation_gui.m b/ProgramFiles/sysplotter_gui_fcns/animation_gui.m index 94642c3..219c705 100755 --- a/ProgramFiles/sysplotter_gui_fcns/animation_gui.m +++ b/ProgramFiles/sysplotter_gui_fcns/animation_gui.m @@ -22,7 +22,7 @@ % Edit the above text to modify the response to help animation_gui -% Last Modified by GUIDE v2.5 07-Sep-2018 12:53:48 +% Last Modified by GUIDE v2.5 29-Sep-2022 15:17:03 % Begin initialization code - DO NOT EDIT @@ -215,3 +215,12 @@ function checkbox_vfieldtheta_movie_Callback(hObject, eventdata, handles) % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of checkbox_vfieldtheta_movie + + +% --- Executes on button press in checkbox_illustrate_shape_space. +function checkbox_illustrate_shape_space_Callback(hObject, eventdata, handles) +% hObject handle to checkbox_illustrate_shape_space (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 checkbox_illustrate_shape_space