Сохраняем анимацию в 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.

Комментарии

Гость
Ответить
Войдите, чтобы оставить комментарий.
Гость
Ответить
Гость
Ответить
Гость
Ответить
Еще нет комментариев, оставьте первый.