Перемещение группы объектов по строке

Этот пример показывает, как переместить группу объектов вместе вдоль строки с помощью преобразований.

Постройте график синусоиды и установите режим пределов по осям вручную, чтобы не повторно вычислять пределы во время цикла анимации.

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 не может чертить каждое обновление на экране.

Смотрите также

| | | | |

Похожие темы

Была ли эта тема полезной?