Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018) — различия между версиями

Материал из 0x1.tv

 
(не показана одна промежуточная версия этого же участника)
;{{SpeakerInfo}}: {{Speaker|Денис Лутошкин}}
<blockquote>
Представлены разработанные авторами кроссплатформенные библиотеки построения графиков функций на языках С++ и Fortran.
</blockquote>

{{VideoSection}}
{{vimeoembed|254114845|800|450}}
<!-- {{youtubelink|}} -->
|Kdh1ysxULw8}}
{{SlidesSection}}
[[File:Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf|left|page=-|300px]]

{{----}}

== Thesis ==
<latex>
\section{=== Введение} ===
Наиболее часто используемыми языками разработки быстроработающих приложений, решающих вычислительные задачи, являются
С C++ и Фортран. В вычислительных приложениях могут использоваться блоки, предназначенные для рисования двух{}- и
 трёхмерных графиков. Данные блоки повышают сложность кода, что снижает его производительность и повышает сложность
отладкиусложняет отладку. Поэтому, при решении инженерных задач и задач вычислительной математики, где нельзя обойтись без построения
 графики, используются сторонние графические библиотеки.

Целью данной работы являлась разработка доступных, кроссплатформенных, свободных и простых для пользователя программных
 комплексов на языках СC/СC++ и Fortran для построения графиков функций.

\section{=== Обзор существующих графических библиотек} ===
На сегодняшний день существует несколько графических библиотек и программ, из них можно выделить: 

* [\footnote{\url{http://www.astro.caltech.edu/tjp/pgplot/}}, PLPlot\footnote{\url{ PGPlot]
* [http://plplot.sourceforge.net/}}, 
Dislin\footnote{\url{ PLPlot]
* [http://www.mps.mpg.de/dislin}}, GNUPlot\footnote{\url{ Dislin]
* [http://www.gnuplot.info/}}. GNUPlot]

Среди особенностей существующих библиотек можно выделить:
\begin{itemize}
\item* отсутствие поддержки 3D -графики в PGPLlot;
\item* плохая портируемость PLPlot в операционные системы, отличные от семейства Linux;
\item* коммерческая (проприетарная) библиотека Dislin генерирует только статические изображения (фигуру нельзя повернуть
 или изменить масштаб);
\item* Dislin бесплатна только для некоммерческого использования;
\item* при использовании свободной графической библиотеки GNUPlot необходимо иметь её целиком на компьютере.
\end{itemize}

Исходя из вышеизложенного, возникает необходимость разработки свободной, переносимой кроссплатформенной графической
 библиотеки.

\section{=== Разработка библиотеки Plotter} ===
Была поставлена задача разработки универсальных программных комплексов построения графиков на языках программирования
 Fortran и C++. Разрабатываемая библиотека должна удовлетворять следующим условиям:

\begin{itemize}
\item должна* быть достаточно простой в применении,  для её использования следует просто подключить к программе и передать
 данные в команду вызова;
\item пользователь должен иметь* обеспечивать возможность взаимодействоватьвзаимодействия пользователя с изображением;
\item должна иметь возможность изображать все основные объекты* поддерживать отображение всех основных объектов: графикиов и поверхности.
\end{itemize}
ей.

При разработке программных комплексов была использована графическая библиотека OpenGL и свободная кроссплатформенная
 реализация библиотеки GLUT — FreeGLUT. Были разработаны свободные и кроссплатформенные библиотеки Plotter для построения
 двух- и трёхмерных графиков. Библиотеки представляют собой набор функций. Для использования библиотек достаточно
использовать главную функцию \Sys{Draw()} (C++) и \Sys{DrawGraph()}их использования достаточно вызвать основную функцию: <code>Draw()</code> (C++) или <code>DrawGraph()</code> (Fortran).

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

Пользователь может управлять положением камеры: смещать камеруеё по осям, вращать её,и масштабировать изображение.
 Изображение учитывает соотношение сторон окна. Пользователь также может изменять режим отображения объектов, что
осуществляется через обработчик нажатий на клавишиклавиш клавиатуры. Пользователь Некоторыеизменить некоторые параметры отображения можно задать перед
стартом отображения. Это осуществляется посредством задания параметров отображения запуском визуализации.

Для подключения библиотеки Plotter:
* на языке Fortran необходимо добавить в программу строку <code>use plotter,</code>;
* на языке С++
следует в файле исходного кодаC++  подключить непосредственно библиотекузаголовочный файл: \<code>#include
{\textquotedbl} "Plotter.h{\textquotedbl}"</code>. 

Для её использования пользователю достаточно знать одну функцию  <code>Draw()</code> (C++) и
или <code>DrawGraph()</code> (Fortran), вызываемую и вызывать с различными параметрами. В зависимости от параметров меняется изображение.

На сегодняшний день тестирование библиотек проведено в ОС Ubuntu Linux, Linux Mint с использованием следующих
компиляторов: Intel Fortran Compiler, Intel C/C++ Compiler, GNU GCC, а также в и ОС Windows (Intel Fortran Compiler, Intel C/C++
 Compiler, GNU GCC, Microsoft (R) C/C++ Optimizing Compiler). Планируется адаптация библиотек для ОС Debian, Альт
 Образование, Simply Linux.

\section{=== Возможности работы подпрограммыподпрограмм DrawGraph и Draw}
\begin{enumerate}
\item ===
# рисование графика одной функции;
\item# рисование графиков нескольких функций. Пример графиков представлен на рисунке 1;
\item# рисование графика функции с интервалами исключения;
\item# рисование графиков нескольких функций с интервалами исключения;
\item# рисование графика по точкам;
\item построение графика по точкам с исключёнными точками;
\item построение графика по точкам с интервалами исключения;
\item построение графиков по нескольким наборам точек;
\item построение графиков по нескольким наборам точек с исключёнными точками.

\item построение графиков по нескольким наборам точек с интервалами исключения ;
\item# построение графика по точкам с исключёнными точками;
# построение графика по точкам с интервалами исключения;
# построение графиков по нескольким наборам точек;
# построение графиков по нескольким наборам точек с исключёнными точками;
# построение графиков по нескольким наборам точек с интервалами исключения;
# построение поверхности. 
\item;
# построение нескольких поверхностей.
\end{enumerate}

Библиотеки можно загрузитьдоступны для загрузки по адресу: \url{https://github.com/LibPlotter/}. [https://github.com/LibPlotter/ https://github.com/LibPlotter/].

Библиотека Plotter используется в учебной деятельности ВятГУ при обучении бакалавров и магистрантов направления
 «Прикладная математика и информатика».

ДРазработанный программный комплекс можно использоватьможет применяться в научной деятельности: при решении инженерных задач, задач
 вычислительной математики, а также при разработкесоздании вычислительных приложений на языках C++ и Fortran.

</latex>

[[File:{{#setmainimage:Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

{{fblink|2092387187680958}}                                          
{{vklink|1130}}                                          
<references/>
* https://github.com/LibPlotter/


{{stats|disqus_comments=0|refresh_time=2018-02-14T17:03:432021-08-31T18:13:10.832992063360|vimeo_plays=20|youtube_comments=1|youtube_plays=0182}}

[[Категория:Draft]]
[[Категория:OSEDUCONF-2018]]
[[Категория:Свободные библиотеки построения графиков]]
[[Категория:Fortran]]

Текущая версия на 08:18, 20 октября 2025

Докладчик
Денис Лутошкин

Представлены разработанные авторами кроссплатформенные библиотеки построения графиков функций на языках С++ и Fortran.

Видео

on youtube

Презентация

Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций (Денис Лутошкин, OSEDUCONF-2018).pdf

Thesis

Введение

Наиболее часто используемыми языками разработки быстроработающих приложений, решающих вычислительные задачи, являются C++ и Фортран. В вычислительных приложениях могут использоваться блоки, предназначенные для рисования двух- и трёхмерных графиков. Данные блоки повышают сложность кода, что снижает его производительность и усложняет отладку. Поэтому при решении инженерных задач и задач вычислительной математики, где нельзя обойтись без построения графики, используются сторонние графические библиотеки.

Целью данной работы являлась разработка доступных, кроссплатформенных, свободных и простых для пользователя программных комплексов на языках C/C++ и Fortran для построения графиков функций.

Обзор существующих графических библиотек

На сегодняшний день существует несколько графических библиотек и программ, из них можно выделить:

Среди особенностей существующих библиотек можно выделить:

  • отсутствие поддержки 3D-графики в PGPlot;
  • плохая портируемость PLPlot в операционные системы, отличные от семейства Linux;
  • коммерческая (проприетарная) библиотека Dislin генерирует только статические изображения (фигуру нельзя повернуть или изменить масштаб);
  • Dislin бесплатна только для некоммерческого использования;
  • при использовании свободной графической библиотеки GNUPlot необходимо иметь её целиком на компьютере.

Исходя из вышеизложенного, возникает необходимость разработки свободной, переносимой кроссплатформенной графической библиотеки.

Разработка библиотеки Plotter

Была поставлена задача разработки универсальных программных комплексов построения графиков на языках программирования Fortran и C++. Разрабатываемая библиотека должна удовлетворять следующим условиям:

  • быть достаточно простой в применении — для её использования следует просто подключить к программе и передать данные в команду вызова;
  • обеспечивать возможность взаимодействия пользователя с изображением;
  • поддерживать отображение всех основных объектов: графиков и поверхностей.

При разработке программных комплексов была использована графическая библиотека OpenGL и свободная кроссплатформенная реализация библиотеки GLUT — FreeGLUT. Были разработаны свободные и кроссплатформенные библиотеки Plotter для построения двух- и трёхмерных графиков. Библиотеки представляют собой набор функций. Для их использования достаточно вызвать основную функцию: Draw() (C++) или DrawGraph() (Fortran).

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

Пользователь может управлять положением камеры: смещать её по осям, вращать и масштабировать изображение. Изображение учитывает соотношение сторон окна. Пользователь также может изменять режим отображения объектов через обработчик нажатий клавиш клавиатуры. Некоторые параметры отображения можно задать перед запуском визуализации.

Для подключения библиотеки Plotter:

  • на языке Fortran необходимо добавить строку use plotter;
  • на языке C++ — подключить заголовочный файл: #include "Plotter.h".

Для использования достаточно знать одну функцию — Draw() (C++) или DrawGraph() (Fortran), вызываемую с различными параметрами. В зависимости от параметров меняется изображение.

На сегодняшний день тестирование библиотек проведено в ОС Ubuntu Linux, Linux Mint с использованием компиляторов Intel Fortran Compiler, Intel C/C++ Compiler, GNU GCC, а также в ОС Windows (Intel Fortran Compiler, Intel C/C++ Compiler, GNU GCC, Microsoft C/C++ Optimizing Compiler). Планируется адаптация библиотек для ОС Debian, Альт Образование, Simply Linux.

Возможности подпрограмм DrawGraph и Draw

  1. рисование графика одной функции;
  2. рисование графиков нескольких функций;
  3. рисование графика функции с интервалами исключения;
  4. рисование графиков нескольких функций с интервалами исключения;
  5. рисование графика по точкам;
  6. построение графика по точкам с исключёнными точками;
  7. построение графика по точкам с интервалами исключения;
  8. построение графиков по нескольким наборам точек;
  9. построение графиков по нескольким наборам точек с исключёнными точками;
  10. построение графиков по нескольким наборам точек с интервалами исключения;
  11. построение поверхности;
  12. построение нескольких поверхностей.

Библиотеки доступны для загрузки по адресу: https://github.com/LibPlotter/.

Библиотека Plotter используется в учебной деятельности ВятГУ при обучении бакалавров и магистрантов направления «Прикладная математика и информатика».

Разработанный программный комплекс может применяться в научной деятельности: при решении инженерных задач, задач вычислительной математики, а также при создании вычислительных приложений на языках C++ и Fortran.

Разработка кроссплатформенных библиотек на языке Fortran и С++ построения графиков функций!.jpg

Примечания и ссылки

Plays:202   Comments:1