Сохраняем анимацию в GIF-ку в Scilab
После того, как анимация объекта реализована, для презентации результатов может пригодиться возможность формирования гиф-изображения.
На основе предыдущей статьи Основа анимации в Scilab, рассмотрим, как можно сохранять анимированные графики в Scilab.
Для создания гифок нам потребуется дополнение animaGIF, установить которое можно прямо из консоли Scilab, просто набрав команду:
atomsInstall("animaGIF")
Установка ATOMS из консоли Scilab.
Кроме того, данное дополнение доступно она фоициальном сайте по ссылке animated GIF creator.
После установки дополнения, необходимо заново запустить среду, т.е. закрыть Scilab и заново его запустить.
Использование данного инструмента, созданного для формирования GIF-картинок, не вызывает особых сложностей. Единственное, что стоит упомянуть: анимация будет значительно подтормаживать.
Программная реализация
Итак, ранее была сформирована программа, которая реализовывала движение точки по прямой. Немного модифицировав этот код, получим движущийся по окружности ромб:
x = cos(2*%pi*t); // положение точки на оси х
y = sin(2*%pi*t); // положение точки на оси y
...
// Рисуем окружность
plot(x, y, 'k--');
...
point.mark_style = 4; //тип соединительных элементов - ромб
point.mark_foreground = color(255,0,0); //цвет кружка в формате rgb - красный
Модификация имеющегося кода.
Ромб, движущийся по окружности.
Далее, для формирования анимированной картинки, нужно указать путь, куда эта картинка будет сохранена и её имя. В программе используется тот же каталог, в котором лежит sce файл с программой:
//путь к данному (открытому) файлу
cur_filepath = get_absolute_file_path("mooving-dot.sce")
//укажем путь, куда сохранить картинку и её имя
gif_pic = cur_filepath+'mooving_dot.gif';
Путь к GIF-ке.
Ниже приведены команды, реализующие запись в GIF при помощи установленного дополнения animaGIF:
...
// Инициируем создание GIF
mdelete(gif_pic);
idGif = animaGIF(gcf(), gif_pic, 10, 0);
...
// добавляем кадр
idGif = animaGIF(gcf(), idGif);
...
// Заканчиваем создание GIF
animaGIF(idGif);
Использование animaGIF.
Полный код программы приведён ниже:
clc; clf();
// входные данные
t = 0:1e-2:1; // временной отрезок
x = cos(2*%pi*t); // положение точки на оси х
y = sin(2*%pi*t); // положение точки на оси y
// Рисуем окружность
plot(x, y, 'k--');
// Рисуем точку в начальный момент времени
plot(x(1), y(1));
point_axes = gca(); //сетка координат
point_scene = gce(); //объекты на сетке
point = point_scene.children; //наша точка
point_axes.data_bounds = [-1.5, -1.5; 1.5, 1.5]; //границы координатных осей
point_axes.grid = [1,1]; //вспомогательная разметка
point_axes.x_label.text = "x"; //подпись горизонтальной оси
point_axes.x_label.font_size = 4; //размер шрифта подписи по оси х
point_axes.title.text = "Движущаяся точка" //Заголовок
point_axes.title.font_size = 4; //размер шрифта заголовка графика
point.mark_style = 4; //тип соединительных элементов - ромб
point.mark_size = 20; //размер соединительных элементов
point.mark_foreground = color(255,0,0); //цвет кружка в формате rgb - красный
//путь к данному (открытому) файлу
cur_filepath = get_absolute_file_path("mooving-dot.sce")
//укажем путь, куда сохранить картинку и её имя
gif_pic = cur_filepath+'mooving_dot.gif';
// Инициируем создание GIF
mdelete(gif_pic);
idGif = animaGIF(gcf(), gif_pic, 10, 0);
// цикл для анимации
for i = 1:length(x)
drawlater();
point.data = [x(i), y(i)];
drawnow();
// добавляем кадр
idGif = animaGIF(gcf(), idGif);
end
// Заканчиваем создание GIF
animaGIF(idGif);
Создание анимированной картинки в Scilab.
Комментарии