И другие программы этой серии
Ниже представлен переработанный файл данного примера, в котором сокращены подробные комментарии на английском языке и введены (только для пояснения) комментарии на русском языке:
% Волновые колебания мембраны
% Переработка файла VIBES фирмы MathWorks, Inc. if~exist(\'MovieGUIFlag\'); figNumber=0; end; hlpStr= ...
[\' Это пример анимации – наблюдение колебаний \' \' трехмерной поверхности – мембраны. \'];
mvinit(figNumber,hlpStr); % Загрузка данных функции load vibesdat;[n,n] = size(L1); nh = fix(n/2); x = (-nh:nh)/nh; % Вычисление коэффициентов
346
Программные средства специальной графики
Основы дескрипторной графики
347
clear c
for k = 1:12
eval([\'c(k) = L\' num2str(k) \'(24,13)/3;\']) end;
% Установка графических параметров axis([-1 1 -1 1 -1 1]);caxis(26.9*[-1.5 1]); colormap(hot); hold on % Генерация кадров мультипликации delt = 0.1; nframes = 12; M = moviein(nframes); for k = 1:nframes,
% Коэффициенты
t = k*delt; s = c.*sin(sqrt(lambda)*t);
% Амплитуды
L = s(1)*L1 + s(2)*L2 + s(3)*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;
% Скорость мультипликации
s = s .* lambda;
V = s(1)*L1 + s(2)*L2 + s(3)*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(1:nh,1:nh) = NaN*ones(nh,nh); Cla
surf(x,x,L,V); axis off
% Создание кадров мультипликации
M(:,k) = mvframe(figNumber,nframes); end; hold off %====================================
% Запись кадров мультипликации mvstore(figNumber,M);
Этот пример дан с целью иллюстрации, и подробно данную программу мы описывать не будем. Ограничимся приведением заключительного кадра (рис. 7.4) анимации, показывающей колебания мембраны.
Рис.
Начало в части 1