Main Content

선을 따라 객체 그룹 이동시키기

이 예제에서는 변환을 사용하여 선을 따라 객체 그룹을 함께 이동시키는 방법을 보여줍니다.

사인파를 플로팅하고 축 제한 모드를 수동 모드로 설정하여 애니메이션 루프 동안 제한을 재계산하지 않도록 합니다.

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는 화면에 일부 업데이트를 그리지 않을 수도 있습니다.

참고 항목

| | | | |

관련 항목