exponenta event banner

fanimator

Создание объекта анимации «стоп-движение»

Описание

пример

fanimator(f) создает объект анимации стоп-движения из функции f. Функция f должен возвращать графические объекты, зависящие только от одной переменной. Эта переменная определяет параметр времени анимации.

По умолчанию fanimator создает кадры стоп-движения f(t0), генерируя 10 кадров на единичный интервал t0 в пределах диапазона t0 от 0 до 10.

пример

fanimator(f,args) позволяет использовать функцию f зависит от нескольких переменных. args задает входные аргументы f.

По умолчанию переменная t = sym('t') - временной параметр анимации. Этот синтаксис создает кадры остановки движения f(subs(args,t,t0)) в пределах диапазона t0 от 0 до 10. Можно анимировать определенное свойство графических объектов, задав его значение как зависящее от t во входном аргументе args.

пример

fanimator(___,Name,Value) задает свойства анимации с использованием одного или нескольких Name,Value аргументы пары. Используйте эту опцию с любой из комбинаций входных аргументов в предыдущих синтаксисах. Параметры пары «имя-значение» применяются к созданному объекту анимации.

пример

fanimator(ax,___) создает анимационный объект stop-motion на оси, указанной ax вместо в текущей оси (gca). Выбор ax может предшествовать любым комбинациям входных аргументов в предыдущих синтаксисах.

fp = fanimator(___) возвращает Animator объект. Использовать fp для запроса и изменения свойств определенного объекта анимации. Список свойств см. в разделе Свойства аниматора.

Примеры

свернуть все

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

Сначала создайте функцию для печати точки в (t,1). Переменная t определяет параметр времени анимации.

f = @(t) plot(t,1,'r*');

Создание объекта анимации стоп-движения, определенного f.

fanimator(f)

Затем создайте дескриптор функции с помощью fplot для построения графика единичной окружности. Круг является функцией двух переменных.

Создание двух символьных переменных t и x. Использовать t для установки центра окружности в (t,1) и x для параметризации периметра окружности в пределах диапазона [-pi pi]. Добавьте объект анимации круга к существующему графику. Задайте для осей X и Y одинаковую длину.

syms t x
hold on
fanimator(@fplot,cos(x)+t,sin(x)+1,[-pi pi])
axis equal
hold off

Введите команду playAnimation для воспроизведения анимации. По умолчанию fanimator создает анимационный объект, генерируя 10 кадров в единицу времени в диапазоне t от 0 до 10.

Анимация линии, изменяющей вертикальную длину и ширину линии. Можно анимировать определенное графическое свойство, задав его значение в зависимости от параметра времени анимации. По умолчанию переменная t - временной параметр анимации.

Создайте две символьные переменные, y и t. Печать линии с помощью y координаты в пределах интервала [0 t] с помощью fplot. Используйте fanimator для создания объекта анимации линий. fanimator изменяет длину линии по вертикали, увеличивая значение t от 0 до 10.

syms y t
fanimator(@fplot,1,y,[0 t])

Введите команду playAnimation для воспроизведения анимации.

Теперь постройте график линии с y координаты в пределах интервала [0 2] с помощью fplot. Установите 'LineWidth' значение свойства для t+1. Используйте fanimator для создания объекта анимации линий. fanimator изменяет ширину линии, увеличивая значение t от 0 до 10.

fanimator(@fplot,1,y,[0 2],'LineWidth',t+1)

Введите команду playAnimation для воспроизведения анимации.

Анимация круга с помощью таймера.

Сначала создайте функцию, отображающую единичную окружность, и сохраните ее в файле с именем circ.m. Функция использует fplot для построения графика единичной окружности с центром в (t,1)и локальная символьная переменная x для параметризации периметра окружности.

function C = circ(t)
    x = sym('x');
    C = fplot(cos(x)+t,sin(x)+1,[0 2*pi],'Color','red');
end

Использовать fanimator для создания объекта анимации единичной окружности. Задайте диапазон анимации параметра времени равным [2 4.5] и частоту кадров в единицу времени до 4. Задайте для осей X и Y одинаковую длину.

fanimator(@circ,'AnimationRange',[2 4.5],'FrameRate',4)
axis equal

Затем добавьте объект анимации таймера. Создайте фрагмент текста для подсчета прошедшего времени с помощью text функция. Использовать num2str для преобразования параметра времени в строку. Установите диапазон анимации таймера в значение [0 4.5].

hold on
fanimator(@(t) text(4.5,2.5,"Timer: "+num2str(t,2)),'AnimationRange',[0 4.5])
hold off

Введите команду playAnimation для воспроизведения анимации. Таймер подсчитывает прошедшее время от 0 до 4,5 секунд. Подвижный круг начинается через 2 секунды и заканчивается через 4,5 секунды.

Анимация двух циклоид в отдельных осях. Циклоидой называется кривая, отслеживаемая фиксированной точкой на окружности при перемещении окружности по прямой линии без проскальзывания.

Сначала создайте две символьные переменные x и t. Создайте фигуру с двумя вложенными чертежами и верните первый объект оси как ax1. Создание анимационного объекта движущейся окружности в ax1 и добавьте фиксированную точку на ободке окружности. Задайте для осей X и Y одинаковую длину.

syms x t
ax1 = subplot(2,1,1);
fanimator(ax1, @fplot, cos(x)+t, sin(x)+1, [-pi pi])
axis equal
hold on
fanimator(ax1, @(t) plot(t-sin(t), 1-cos(t), 'r*'))

Для отслеживания циклоида используйте переменную времени в интервале печати. fplot функция строит график кривой в пределах интервала [0 t]. Создайте объект циклоидной анимации. По умолчанию fanimator создает кадры стоп-движения в диапазоне t от 0 до 10 секунд. fanimator строит график первого кадра в t равно 0.

fanimator(ax1, @fplot, x-sin(x), 1-cos(x), [0 t], 'k')
hold off

Затем создайте еще один циклоид на втором объекте оси ax2. Выполните трассировку кривой, созданной фиксированной точкой, на расстоянии 1/2 от центра окружности. Задайте для осей X и Y одинаковую длину.

ax2 = subplot(2,1,2);
fanimator(ax2, @fplot, cos(x)+t, sin(x)+1, [-pi pi])
axis equal
hold on
fanimator(ax2, @(t) plot(t-sin(t)/2, 1-cos(t)/2, 'r*'))
fanimator(ax2, @fplot, x-sin(x)/2, 1-cos(x)/2, [0 t], 'k')
hold off

Введите команду playAnimation для воспроизведения анимации.

Создайте рисунок пользовательского интерфейса. Укажите оси пользовательского интерфейса фигуры.

fig = uifigure;
ax = uiaxes(fig);

Figure contains an axes. The axes is empty.

Добавление объекта анимации к осям пользовательского интерфейса с помощью fanimator. Создайте две символьные переменные, x и t. Постройте график кривой, которая растет экспоненциально как функция времени t в пределах интервала [0 3].

syms x t;
fanimator(ax,@fplot,exp(x),[0 t],'r','AnimationRange',[0 3])

Figure contains an axes. The axes contains an object of type functionline.

Воспроизведение анимации на рисунке пользовательского интерфейса fig путем ввода команды playAnimation(fig). Кроме того, можно использовать команду playAnimation(ax.Parent).

Copyright 2018 The MathWorks, Inc.

Входные аргументы

свернуть все

Функция, возвращающая графические объекты, заданная как дескриптор функции. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.

Дополнительные аргументы, указанные как входные аргументы дескриптора функции, возвращающего графические объекты.

Целевые оси, указанные как Axes объект. Для получения дополнительной информации о Axes объекты, см. axes.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'AnimationRange',[2 8],'FrameRate',30

Параметр времени анимации, заданный как символьная переменная.

Пример: sym('y')

Диапазон параметра времени анимации, заданный как двухэлементный вектор строки. Эти два элемента должны быть реальными значениями, которые увеличиваются.

Пример: [-2 4.5]

Частота кадров, заданная как положительное значение. Частота кадров определяет количество кадров в единицу времени для объекта анимации.

Пример: 30

Выходные аргументы

свернуть все

Объект анимации, возвращаемый как скаляр. Этот объект можно использовать для запроса и изменения свойств созданных кадров анимации. Список свойств см. в разделе Свойства аниматора.

Совет

  • При создании графика с помощью функции печати, например fplotMATLAB ® создает ряд графических объектов. Затем можно анимировать определенное свойство графических объектов с помощью fanimator и playAnimation функции. Обратите внимание, что некоторые функции, такие как title и xlabelсоздайте текстовые объекты, которые нельзя анимировать. Вместо этого используйте text для создания текстовых объектов, которые можно анимировать.

Представлен в R2019a