📄 truck0.m
字号:
function truck0(sys,cb)% TRUCK0 initializes animation.%% TRUCK0(SYS,CB) initializes the truck animation. If% a truck animation figure is already on the screen, it% is brought to the front. Otherwise a new figure is created.% Important animation handles are placed in the figure's UserData.TimeClock = 0;%RefSignal = str2num(get_param([sys '/' cb],'Value'));XTruck = IXPOS;YTruck = IYPOS;phiTruck = IPHI;%XCart = 0;%Theta = 0;XDelta = 2;YDelta = 2;%PDelta = 0.2;FigureName = 'Truck Visualization';%XPendTop = XCart + 10*sin(Theta); % Will be zero%YPendTop = 10*cos(Theta); % Will be 10%PDcosT = PDelta*cos(Theta); % Will be 0.2%PDsinT = -PDelta*sin(Theta); % Will be zeroNotOnScreen = 1;Figures = get(0,'Chil');for INDEX=1:length(Figures), if strcmp(get(Figures(INDEX),'Type'),'figure'), if strcmp(get(Figures(INDEX),'Name'),FigureName), set(0,'CurrentF',Figures(INDEX)); NotOnScreen = 0; FigUD = get(Figures(INDEX),'UserData'); Truck = FigUD(1); %Cart = FigUD(1); %Pend = FigUD(2); TimeField = FigUD(3); %RefMark = FigUD(5); %set(RefMark,'XData',RefSignal+[-XDelta 0 XDelta]); set(TimeField,'String',num2str(TimeClock)); set(Truck,'XData',ones(2,1)*[XTruck-XDelta XTruck+XDelta]); %set(Cart,'XData',ones(2,1)*[XCart-XDelta XCart+XDelta]); %set(Pend,'XData', ... % [XPendTop-PDcosT XPendTop+PDcosT; XCart-PDcosT XCart+PDcosT], ... % 'YData',[YPendTop-PDsinT YPendTop+PDsinT; -PDsinT PDsinT]); end % if right name end % if ifigureend % for INDEXif NotOnScreen, Fig = figure('Unit','pixel','Pos',[100 100 500 300], ... 'Name',FigureName); axes('Unit','pixel','Pos',[50 50 400 200],'CLim',[1 64], ... 'Xlim',[0 100],'Ylim',[0 100],'Vis','off'); %axes('Unit','pixel','Pos',[50 50 400 200],'CLim',[1 64], ... % 'Xlim',[-12 12],'Ylim',[-2 10],'Vis','off'); Truck= surface('XData',ones(2,1)*[XTruck-XDelta XTruck+XDelta], ... 'YData',[YTruck-YDelta YTruck+YDelta],'ZData',zeros(2),'CData', ... ones(2), 'Erase', 'xor'); %Cart = surface('XData',ones(2,1)*[XCart-XDelta XCart+XDelta], ... % 'YData',[0 0; -2 -2],'ZData',zeros(2),'CData',ones(2), ... %'Erase','xor'); %Pend = surface('XData',[XPendTop-PDcosT XPendTop+PDcosT; ... % XCart-PDcosT XCart+PDcosT], ... %'YData',[YPendTop-PDsinT YPendTop+PDsinT; -PDsinT PDsinT], ... %'ZData',zeros(2),'CData',11*ones(2),'Erase','xor'); uicontrol('Style','text','Unit','pixel','Pos',[0 0 500 50]); uicontrol('Style','text','Unit','pixel','Pos',[150 0 100 25], ... 'Horiz','right','String','Time: '); TimeField = uicontrol('Style','text','Unit','pixel', ... 'Pos',[250 0 100 25],'Horiz','left', ... 'String',num2str(TimeClock)); SlideControl = uicontrol('Style','slide','Unit','pixel', ... 'Pos',[100 25 300 22],'Min',-9,'Max',9, ... 'Value',str2num(get_param([sys '/' cb],'Value')),'Call', ... ['set_param(''' sys '/' cb ''',''Value'',' ... 'num2str(get(get(gcf,''CurrentO''),''Value'')));']); %RefMark = patch(RefSignal+[-XDelta 0 XDelta],[-2 0 -2],22); uicontrol('Style','push','Pos',[415 15 70 20],'String','Close', ... 'Call','delete(gcf);'); uicontrol('Style','push','Pos',[15 15 70 20],'String','Playback', ... 'Call', ... ['ud = get(gcf,''UserData'');' ... 'if exist(''t'')==1,' ... ' index = find(abs(round(t/0.1) - t/0.1) < 1e-8);' ... ' for i=index''', ... ' truckset(t(i),ud,y(i,:));' ... %' pendsets(t(i),ud,y(i,:));' ... ' end,' ... 'else,' ... ' disp(''Must run simulation first.''),' ... 'end']); %set(RefMark,'Erase','xor'); set(Fig,'UserData',[Truck TimeField]); %set(Fig,'UserData',[Cart Pend TimeField SlideControl RefMark]);enddrawnow% end truck0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -