Волновые колебания мембраны
Принцип мультипликации легко распространить на существенно более сложные задачи анимации. В качестве иллюстрации можно рассмотреть системный пример 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 неработоспособна. Чтобы она работала, эти комментарии должны быть убраны или заменены англоязычными. В этом случае проблем с запуском программы не будет.