您当前的位置: 首页 >  动画

slandarer

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MATLAB 创意动画——穿墙的小球

slandarer 发布时间:2020-07-05 21:21:23 ,浏览量:0

效果: 在这里插入图片描述 两个figure的位置都可以任意改变↓↓↓↓↓↓ 在这里插入图片描述 完整代码:

function cannonball
global cannonballFig1 cannonballFig2 cannonballAxes1 cannonballAxes2
global cannonballTimer
global postionPart1 postionPart2
cannonballFig1=uifigure('units','pixels',...
    'position',[15 450 300 200],...
    'Numbertitle','off',...
    'menubar','none',...
    'resize','off',...
    'name','cannonball 1.0 | by slandarer',...
    'color',[0.95 0.95 0.95]);
cannonballFig2=uifigure('units','pixels',...
    'position',[400 150 400 300],...
    'Numbertitle','off',...
    'menubar','none',...
    'resize','off',...
    'name','cannonball 1.0 | by slandarer too',...
    'color',[0.95 0.95 0.95]);
cannonballAxes1=uiaxes('Units','pixels',...
      'parent',cannonballFig1,...
      'Position',[0 0 300 200],...
      'Color',[0.99 0.99 0.99],...
      'Box','on', ...
      'XLim',[0 300],...
      'YLim',[0 200], ...
      'YDir','normal', ...
      'XColor',[0.99 0.99 0.99],'YColor',[0.99 0.99 0.99],...
      'XTick',[],'YTick',[]);
cannonballAxes2=uiaxes('Units','pixels',...
      'parent',cannonballFig2,...
      'Position',[0 0 400 300],...
      'Color',[0.99 0.99 0.99],...
      'Box','on', ...
      'XLim',[0 400],...
      'YLim',[0 300], ...
      'YDir','normal', ...
      'XColor',[0.99 0.99 0.99],'YColor',[0.99 0.99 0.99],...
      'XTick',[],'YTick',[]);
cannonballAxes1.Toolbar.Visible='off';
cannonballAxes2.Toolbar.Visible='off';
uibutton('parent',cannonballFig1,...
    'position',[220,160,60,30],...
    'Text','开始',...
    'FontWeight','bold',...
    'ButtonPushedFcn',@giveSpeed,...
    'FontColor',[0.27 0.25 0.25],...
    'FontSize',15);
postionPart1=get(cannonballFig1,'position');
ballPos=[20,150]+postionPart1(1,1:2);
vy=0;
a=0;
vx=0;
scatter(cannonballAxes1,ballPos(1)-postionPart1(1),ballPos(2)-postionPart1(2),200,'filled','CData',[0 0 0]);
scatter(cannonballAxes2,[],[],220,'filled','CData',[98 68 38]./255);
fps = 20;                                    
cannonballTimer=timer('ExecutionMode', 'FixedRate', 'Period',1/fps, 'TimerFcn', @cannonballgame);
start(cannonballTimer)
    function giveSpeed(~,~)
        ballPos=[20,150]+postionPart1(1,1:2);
        vy=-0.5;
        a=0.2;
        vx=4;
    end
    function cannonballgame(~,~)
        postionPart1=get(cannonballFig1,'position');
        postionPart2=get(cannonballFig2,'position');
        vy=vy-a;
        ballPos=ballPos+[vx,vy];
        if ballPos(1)>=postionPart1(1)&&ballPos(1)            
关注
打赏
1664692598
查看更多评论
0.0422s