在Octave中移动圆圈4.2.1使用set()和drawCircle()

时间:2018-04-29 22:35:42

标签: animation octave gnu

我正在尝试使用Octave 4.2.1中的图形编写一个模拟太阳系中太阳周围每个行星运动的代码。该项目的一个方面是使太阳和图上的所有行星都是一定大小的圆(即特定半径)并使每个圆移动。我遇到的问题是使用内置的set()函数为已经绘制的每个圆的中心设置新的x和y值。我不想在循环的每次迭代中重绘每个圆,因为它会导致非常不稳定和不一致的运动,并且使用set()函数,它是非常平滑和一致的运动。我已经能够使用句柄和plot()函数将set()函数用于简单点。但是对于我想要使用的函数,即drawCircle(),使用set()函数总是返回错误。

这是我想要在实际代码中执行的简单版本(不起作用):

figure 1
  s=drawCircle(0,0,1);
  hold on
  axis([-2 2 -2 2])
  set(s,'x0', 1)

此代码返回错误:" set:unknown line property x0"。更具体地说,我想知道如何在绘制之后使用set()函数设置使用drawCircle()绘制的圆心的x和y坐标。 我真的很感激,如果有人对如何使用它有任何想法,或任何替代解决方法来实现同样的事情。

1 个答案:

答案 0 :(得分:0)

在我看来,这可以做你想要的:

clear;clf
th=2*pi*linspace(0,1,19);xc=cos(th);yc=sin(th);
h=plot(xc,yc,'linewidth',1);
axis([-2 2 -2 2]);
pause
x=get(h,'xdata');y=get(h,'ydata');
set(h,'xdata',x+1,'ydata',y+0.5)