我有一组描述对象轨迹的(x,y)
坐标。我想使用 GNU Octave 制作该轨迹的动画。
数据集非常大,因此如果我希望动画流畅,我将无法在每次迭代时重新绘制整个绘图。有哪些函数可以让我“更新”绘图而不是重新绘制它?
此外,我还有另一组(vx,vy)
点,它们描述了物体的速度。我希望我的动画轨迹能够考虑速度。我应该使用什么函数让程序休眠几毫秒,以使轨迹以与对象相同的速度进行动画处理?
(我已经知道Octave有comet
等功能,但我需要编写自己的动画器。)
编辑:这是我到目前为止所掌握的内容。我预计它运行得太快并要求我使用 pause
,但它仍然相当慢(x
和 y
有 10001 个元素)。
bounds = [min(x) max(x) min(y) max(y)];
axis(bounds);
hold on
for k = 2 : length(x)
plot(x(k-1:k), y(k-1:k));
drawnow("expose");
end
hold off
最佳答案
您可以使用set
命令仅更改特定绘图对象h
的XData
和YData
数据>:
h = plot(my_xdata(0),my_ydata(0))
for i_=1:length(my_xdata)
set(h, 'YData', my_ydata(i_))
set(h, 'XData', my_xdata(i_))
pause(sqrt(vx(i_)^2+vy(i_)^2))
end
pause(x)
命令暂停 x
秒,可能小于 1。
关于animation - 使用 Octave 制作轨迹动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665497/