선을 따라 객체 그룹 이동시키기
이 예제에서는 변환을 사용하여 선을 따라 객체 그룹을 함께 이동시키는 방법을 보여줍니다.
사인파를 플로팅하고 축 제한 모드를 수동 모드로 설정하여 애니메이션 루프 동안 제한을 재계산하지 않도록 합니다.
x = linspace(-6,6,1000);
y = sin(x);
plot(x,y)
axis manual
transform 객체를 생성하고, 생성된 객체의 부모를 현재 좌표축으로 설정합니다. 선 시작 부분에 마커와 텍스트 주석을 플로팅합니다. num2str
함수를 사용하여 해당 점의 y 값을 텍스트로 변환합니다. 마커와 텍스트 주석의 부모를 transform 객체로 설정하여 두 객체를 그룹화합니다.
ax = gca; h = hgtransform('Parent',ax); hold on plot(x(1),y(1),'o','Parent',h); hold off t = text(x(1),y(1),num2str(y(1)),'Parent',h,... 'VerticalAlignment','top','FontSize',14);
transform 객체의 Matrix
속성을 업데이트하여 선을 따라 각 후속 점으로 마커와 텍스트를 이동시킵니다. 선에서의 다음 점과 첫 번째 점의 x 값과 y 값을 사용하여 변환 행렬을 결정합니다. 선을 따라 이동하면서 y 값과 일치하도록 텍스트를 업데이트합니다. drawnow
를 사용하여 각 반복을 마칠 때마다 화면에 업데이트를 표시합니다.
for k = 2:length(x) m = makehgtform('translate',x(k)-x(1),y(k)-y(1),0); h.Matrix = m; t.String = num2str(y(k)); drawnow end
선을 따라 함께 움직이는 마커와 텍스트가 애니메이션으로 표시됩니다.
데이터가 많은 경우 애니메이션 속도를 향상시키기 위해 drawnow
대신 drawnow limitrate
를 사용할 수 있습니다. 그러나 drawnow limitrate
는 화면에 일부 업데이트를 그리지 않을 수도 있습니다.
참고 항목
hgtransform
| makehgtform
| plot
| drawnow
| axis
| text