русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Основные средства анимации


Дата добавления: 2015-07-23; просмотров: 984; Нарушение авторских прав


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

Отметим кратко основные команды, реализующие анимацию в системе MATLAB:

· capture — захват видеоизображения;

· getframe — создание кадра для анимации;

· moviein — выполнение анимации;

· rotate — вращение фигуры;

· frame2im — преобразование кадра в графический образ;

· im2frame — преобразование графического образа в кадр.

Применение некоторых из этих команд мы рассмотрим далее на конкретных примерах. К сожалению, серьезные задачи анимации обычно требуют применения программных средств — главным образом циклов. Мы рассмотрим их далее, но представляется, что читатели знакомы с понятием циклов, так что приведенные примеры не будут слишком сложны. В крайнем случае, оставьте их разбор до знакомства с основами программирования в системе MATLAB (урок 20).

Вращение фигуры — логотипа MATLAB

Рассмотрим вначале не очень сложный пример вращения сложной трехмерной поверхности — логотипа системы MATLAB, который представлен файлами logo.m и logo.mat. Ниже представлен фрагмент программы, обеспечивающий вращение этой поверхности (фигуры) относительно осей системы координат:

if ~exist('MovieGUIFlag'). figNumber=0; end;

load logo

h=surfl(L.source);

colormap(M);

ax=[7 52 7 52 -.5 .8]:

axis(ax);

axis on:

shading interp;

m=moviein(25):

for n=l:25.

rotate(h.[0 90],15.[21 21 0]);

h=surfl(get(h.'XData'),get(h.'YData').

get(h.'ZData'),source);

axis(ax);

axis on;

shading interp;

m(:,n)=mvframe(figNumber,24); end;



mvstoretfigNumber.m);

Эта программа имеет два блока: в первом задается исходная функция и ее образ, а во втором (с циклом for) выполняется создание кадров и их последовательное воспроизведение, создающее эффект анимации. На рис. 7.3 показан стоп-кадр полученной анимации.

Рис. 7.3.Стоп-кадр программы, обеспечивающей вращение фигуры — логотипа MATLAB

 

Волновые колебания мембраны

Принцип мультипликации легко распространить на существенно более сложные задачи анимации. В качестве иллюстрации можно рассмотреть системный пример vibes, демонстрирующий волнообразные колебания тонкой пластины — мембраны. Ниже представлен переработанный файл данного примера, в котором сокращены подробные комментарии на английском языке и введены только для пояснения комментарии на русском языке, их следует изъять при попытке запустить программу:

%Волновые колебания мембраны

%Переработка файла VIBES фирмы MathWorks. Inc.

if~exist('MovieGUIFlag'): figNumber=0; end;

hlpStr= ...

[' Это пример анимации - наблюдение колебаний '

' трехмерной поверхности - мембраны. ']:

mvinit(figNumber.hlpStr):

% Загрузка данных функции

load vibesdat;

[n.n] = size(Ll):

nh = fix(n/2): .

x = (-nh:nh)/nh;

% Вычисление коэффициентов

clear с

for k = 1:12.

eval(['c(k) = L' num2str(k) '(24,13)73:'])

end;

% Установка графических параметров

axis([-11-11-11]); caxis(26.9*[-1.5 1]);

colormap(hot); hold on

% Генерация кадров мультипликации

delt = 0.1;

nf names =12:

M - moviein(nf names):

fon k - l:nf names,

% Коэффициенты

t = k*delt;

s = c.*sin(sqnt(1ambda)*t);

% Амплитуды

L = s(l)*Ll + s(2)*L2 + s(3)*L3 + s(4)*L4 +

s(5)*L5 + s(6)*L6 + .

S(7)*L7 + s(8)*l_8 + s(9)*L9 + s(10)*L10 +

s(ll)*Lll + s(12)*L12;

% Скорость мультипликации

s = s .* lambda;

V = s(l)*Ll + s(2)*L2 +'sC3)*L3 +

s(4)*L4 + s(5)*L5 + s(6)*L6 + ...

s(7)*L7 + s(8)*L8 + s(9)*L9 + s(10)*L10 +

s(11)*L11 + s(12)*L12;

% График поверхности; цвет задается скоростью

V(l:nh.l:nh) = NaN*ones(nh,nh);

Cla

sunf(x.x.L.V);

axis off

% Создание кадров мультипликации

M(:.k) - mvfname(f1gNumben,nfnames): end : hold off

%=======================================

% Запись кадров мультипликации

mvstone( figNumben , M) ;

Этот пример дан с целью иллюстрации, и подробно эту программу мы описывать не будем. К сожалению, в представленном виде (с русскоязычными комментариями), данная программа MATLAB 6 неработоспособна. Чтобы она работала, эти комментарии должны быть убраны или заменены англоязычными. В этом случае проблем с запуском программы не будет.



<== предыдущая лекция | следующая лекция ==>
Движение точки в пространстве | Объекты дескрипторной графики


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.441 сек.