首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进Matlab中的动画渲染

改进Matlab中的动画渲染
EN

Stack Overflow用户
提问于 2011-12-26 04:20:25
回答 2查看 360关注 0票数 0

我已经写了一段代码来创建动画(satellite movement around the Earth)。当我运行它时,它工作得很好。但是,当它被修改为Matlab GUI中更复杂的代码的一部分时,结果会发生变化(主要是因为要绘制的点更多)。我还注意到,如果我使用OpenGL渲染器,卫星的移动速度会比使用其他渲染器(Painters和Zbuffer)时更快。我不知道是否有进一步的可能性来实现对卫星运动的渲染的改进。我认为,关键可能是更改创建卫星实际位置(handles.psat)及其沿时间的轨迹(handles.tray)的代码

代码语言:javascript
复制
handles.tray = zeros(1,Fin);
handles.psat = line('parent',ah4,'XData',Y(1,1), 'YData',Y(1,2),...
    'ZData',Y(1,3),'Marker','o', 'MarkerSize',10,'MarkerFaceColor','b');
...
while (k<Fin)
            az = az + 0.01745329252;
            set(hgrot,'Matrix',makehgtform('zrotate',az));
            handles.tray(k) = line([Y(k-1,1) Y(k,1)],[Y(k-1,2) Y(k,2)],...
                [Y(k-1,3) Y(k,3)],...
        'Color','red','LineWidth',3);
            set(handles.psat,'XData',Y(k,1),'YData',Y(k,2),'ZData',Y(k,3));
            pause(0.02); 
            k = k + 1;

            if (state == 1)
                state = 0;
                break;
            end
            end
...
EN

回答 2

Stack Overflow用户

发布于 2011-12-26 20:10:14

您是否考虑过在数据上应用旋转变换矩阵而不是轴?

我认为<虽然我还没有检查过it>,但它可以加速你的代码。

票数 1
EN

Stack Overflow用户

发布于 2013-01-27 20:47:55

您已经使用了我用来提高速度的典型技巧,比如预计算帧、设置XDataYData而不是重新绘制,以及选择渲染器。不过,这里还有几个小贴士:

1)我在你的描述中注意到的一件事是不同的渲染器和不同的复杂性改变了你的动画运行的速度。这通常是不可取的。考虑使用帧之间的实际间隔(即,使用tic; dt = toc)来计算动画前进的距离,而不是依赖pause(0.2)来生成稳定的帧速率。

2)如果复杂度太高,导致您的帧率过低,请考虑用drawnow替换pause(0.02),或者至少计算每帧的暂停时间。

3)通过测量各个步骤所需的时间,进一步缩小瓶颈的来源。这将使您能够优化操作的正确阶段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8631387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档