В этом примере показано, как переместиться, объединенная группа объектов вдоль линии с помощью преобразовывает.
Постройте синусоиду и установите режим пределов по осям вручную, чтобы не повторно вычислять пределы во время цикла анимации.
x = linspace(-6,6,1000);
y = sin(x);
plot(x,y)
axis manual
Создайте объект преобразования и установите его родительский элемент на текущую систему координат. Постройте маркер и текстовую аннотацию в начале линии. Используйте num2str
функционируйте, чтобы преобразовать y-значение в той точке к тексту. Сгруппируйте два объекта путем установки их родительских элементов на объект преобразования.
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);
Переместите маркер и текст к каждой последующей точке вдоль линии путем обновления 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 limitrate
вместо drawnow
для более быстрой анимации. Однако drawnow limitrate
не может чертить каждое обновление на экране.
axis
| drawnow
| hgtransform
| makehgtform
| plot
| text