
- •Моделирование движения голономных механических систем в пакете Matlab
- •Введение
- •Основы программирования в системе Matlab
- •Работа с матрицами
- •Построение графиков
- •Дескрипторная графика [2] Графические объекты
- •Использование дескрипторов объектов
- •Функции для работы с графическими объектами
- •Установка свойств объекта
- •Определение осей или рисунка
- •Нахождение дескрипторов существующих объектов
- •Скрипты и функции
- •Полезные команды
- •Решение систем дифференциальных уравнений
- •Визуализация движения в Матлабе
- •Библиотека примитивов
- •Окружность
- •Заштрихованная кривая
- •Спираль
- •Пружина
- •Примеры моделирования голономных систем Диск с маятником
- •Визуализация динамики механической системы.
- •Уравнения равновесия системы
- •Динамические эффекты на примере диска с маятником
- •Цилиндр, катающийся в подвижном желобе
- •Заключение
- •Литература
Визуализация движения в Матлабе
Для построения движущегося изображения в Матлабе можно использовать два способа:
полная перерисовка изображения,
изменение элементов существующего изображения с использованием дескрипторной графики.
Ниже рассмотрен пример, в котором создаются кадры, сохраняются на диск, а далее проигрываются с диска.
Создается графическое окно (figure), для которого устанавливается свойство «Название» (Name) – «Создание кадров».
figure('Name','Создание кадров')
Далее устанавливается число кадров:
n=50
Создается массив с временными точками:
x=-10 : 0.1 : 10;
В цикле чертится график функции
for j=1:n
plot(x,sin(x)*sin(j*0.1));
ylim([-1 1]);
M2(:,j) = getframe;
end
Функция getframe возвращает пиксельное изображение текущего графического окна (figure). Эта функция обычно используется в циклах для сохранения в массив снимков текущего окна (figure) и последующего воспроизведения этих снимков с помощью стандартной функции movie. Познакомимся с двумя полезными командами – save и load:
save M2; % Запись переменных рабочего пространства в файл M2.mat
load M2; % Загрузка переменных рабочего пространства из файла M2.mat
Далее в программе создается новое окно с названием «Просмотр фильма»:
figure('Name','Просмотр фильма')
и показывается «фильм» из ранее созданных кадров:
movie(M2);
Рассмотрим визуализацию движения точки по подвижной синусоиде без применения команд getframe–movie. В начале программы устанавливается число кадров, условных единиц времени:
n=200;
В переменной x сохраняются значения временных точек
x=-10 : 0.1 : 10 ;
y=sin(x);
Строится график синусоиды, дескриптор которого сохраняется в переменную h_p:
h_p=plot(x,y);
Дескриптор точки графика с координатами [x(1), y(1)] сохраняется в переменную h_m:
h_m =line(x(1),y(1), 'Marker','.','MarkerSize',40,'Color','b');
hold on;
Для каждого момента времени происходит изменение свойств графика синусоиды и выбранной точки с использованием дескрипторов и функции set. С помощью стандартной команды pause(n) прерывается выполнение команды на n секунд с тем, чтобы пользователь успел увидеть движение точки по синусоиде.
for j=1:n
y=sin(x-0.05*j); % Сдвиг синусоиды вправо на 0.05
set(h_p,'YData',y); % Сдвиг синусоиды вправо на 0.05
set (h_m,'XData',x(j) ); % Сдвиг точки вправо на 0.1
set (h_m,'YData',y(j) ); % Сдвиг точки вправо на 0.1
pause(0.02)
end
В разделе «Примеры моделирования голономных систем» для визуализации движения механических систем используется второй из рассмотренных подходов – изменение элементов существующего изображения с использованием дескрипторной графики. Это связано с тем, что полная перерисовка изображения требует большего расхода памяти и потому не оптимальна для рассматриваемых задач.
Библиотека примитивов
В данном разделе описываются функции – примитивы, которые описывают основные «строительные» элементы, используемые при моделировании динамики голономных механических систем. К примитивам относятся окружность, заштрихованная кривая, опора, спираль, пружина, вектор.