2012-05-19 6 views
4

개체의 궤도를 설명하는 (x,y) 좌표 집합이 있습니다. GNU Octave를 사용하여이 궤적을 애니메이션화하고 싶습니다.옥타브를 사용한 애니메이션 궤도

데이터 세트가 매우 크기 때문에 애니메이션을 부드럽게하려면 모든 반복마다 전체 플롯을 다시 그릴 수 없습니다. 플롯을 다시 그리기보다는 "업데이트"할 수있는 기능은 무엇입니까?

또한 개체의 속도를 나타내는 (vx,vy) 점이 또 있습니다. 내 애니메이션 궤적을 고려하여 속도를 높이고 싶습니다. 궤도를 객체와 같은 속도로 움직이게하려면 몇 밀리 초 동안 프로그램을 잠자기 상태로 유지하려면 어떤 기능을 사용해야합니까?

은 (이미 옥타브는 comet 등의 기능을 가지고 알아,하지만 난 내 자신의 애니메이션을 작성해야합니다.)


편집 : 여기 내가 지금까지 무엇을합니다. 나는 이것이 너무 빨리 달리고, 내가 pause을 사용할 것을 요구했다. 그러나 그것은 아직도 느리다 (xy는 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 

답변

4

당신은 특정 플롯 객체 h을 위해 단지 XDataYData 데이터를 변경하는 set 명령을 사용할 수 있습니다

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 이하가 될 수있다.

+0

'일시 중지'는 유용하지만 '설정'은 내가 원하는 것이 아닙니다. 탄도의 흔적이 남아 있기를 바랍니다. 단일 점을 다시 그려주는 것이 아니라 플롯의 자취를 업데이트 할 수있는 함수가 있는지 알고 싶습니다. –

+0

나는 그것이 애니메이션으로하고 싶은 것이 분명하지 않다고 생각한다. 선 (궤도)을 그려서 그 선을 따라 움직이는 물체를 움직이게하고 싶습니까? 회선 자체를 업데이트 하시겠습니까? – andyras

+0

라인 자체를 업데이트하고 싶습니다. –

0

"보류"명령을 찾고 있다고 생각합니다. 플롯을 잡으면 모든 이전 데이터가 플롯에 유지되고 새 데이터가 맨 위에 추가됩니다.

+3

'hold'는 플롯에서 이전 데이터를 제거 할 수 없습니다. 그래프를 애니메이션으로 만들 때 일부 데이터를 추가하거나 다른 데이터를 제거하려는 경우가 있습니다. 'hold '는 일반적으로 하나의 그래프에 여러 데이터 시리즈를 그리는 데 사용됩니다. – ronalchn