Проблемы высшего образования
211
ПРОБЛЕМЫ ВЫСШЕГО ОБРАЗОВАНИЯ
УДК 05.13.18
В. В. Гарбарук, В. Н. Фоменко
Петербургский государственный университет путей сообщения
ПРОГРАММНЫЙ ПРОДУКТ ДЛЯ АВТОМАТИЗАЦИИ ГРАФИЧЕСКОГО ПРИЛОЖЕНИЯ СИСТЕМЫ КОМПЬЮТЕРНОЙ ВЕРСТКИ LATEX
Кратко описан пакет утилит, созданный с помощью системы программирования Compaq Visual Fortran с целью расширения возможностей графических приложений системы компьютерной верстки Latex, широко применяемой для подготовки изданий различного формата. Описываемый продукт разработан на основе соединения средств форматирования и графики Latex и гибкого программирования и вычислительных возможностей языка Fortran 95. Данный пакет позволяет просто строить изображения, состоящие из многих повторяющихся или изменяющихся по определенному правилу элементов, производить автоматическую штриховку выделенной области, делать вставки форматированных объектов, например формул, в любую область рисунка. Пакет позволяет также создавать изображения трехмерных объектов, наблюдаемых вдоль заданного направления. Возможно автоматическое построение плоских сечений таких объектов.
компьютерная графика, Latex, трехмерная графика.
Введение
В данной работе описывается программный продукт, призванный облегчить (а во многих случаях сделать реальным на практике) создание сложных рисунков для работающих в системе Latex [1]. Если учесть, что построение рисунков и в системе Word -задача не из простых, то наличие такого инструмента весьма полезно. Результат получается в формате PDF или Post Script.
Основной недостаток используемого в системе Latex графического пакета Picture и его расширений EPIC и EEPIC состоит в их ориентации на работу вручную. Например, они позволяют вывести график, но предполагается, что координаты точек будут вводиться программистом в качестве аргументов команды. В данном пакете пользователь должен лишь написать программу на языке Fortran 95 [2], задающую кривую параметрически. Входной файл, созданный программой Fortran, перерабатывается транс-
лятором Latex в файл PDF или Post Script, показанный на рисунках 1, 2, 3.
Отметим следующие особенности рисунков, построенных с помощью описываемого программного пакета:
- аутентичность, т. е. соблюдение геометрических свойств с точностью до изображающих рисунок пикселей;
- возможность в случае необходимости изображения большого количества иллюстрирующих элементов (стрелок, линий и т. п.);
- автоматическая штриховка области с границей, заданной параметрически;
- изображение пространственных объектов и их плоских сечений с точным соблюдением соотношений ортогональной проекции.
1 Краткое описание графических
утилит
Дадим краткое описание утилит (общее их количество более 80), которые могут быть ис-
ISSN 1815-588Х. Известия ПГУПС
2013/1
212
Проблемы высшего образования
пользованы при создании рисунков. Прежде всего задается размер рисунка, затем указываются диапазоны изменения условных координат вдоль горизонтальной и вертикальной осей, выводятся оси координат, производится их оцифровка, добавляются вспомогательные надписи. Отметим, что координаты точек на выводимом рисунке задаются в условных единицах. Масштаб по горизонтали и вертикали определяется исходя из размеров рисунка и диапазона изменения координат в условных единицах по горизонтали и вертикали. Для построения линии следует вызвать соответствующую подпрограмму пакета, а имена процедуры, задающей кривую, включаются как параметры этой подпрограммы. Линии, образующие рисунок, могут быть сплошными или пунктирными, причем параметры пунктира могут задаваться пользователем. Толщина линии также может определяться пользователем.
2 Пример построения рисунка
Пример этого раздела касается свойств решений дифференциального уравнения
У + У = x2.
Общее решение этого дифференциального уравнения имеет вид:
y = x2 - 2 x + 2 + Ce -x. (1)
Семейство изоклин уравнения определяется уравнением
У = x2 -Ci. (2)
В формулах 1 и 2 величины C и C1 - произвольные постоянные.
Для графической иллюстрации решения дифференциального уравнения создан рисунок 1, на котором показано, как интегральная кривая пересекает изоклины под углом, задаваемым стрелками, исходящими из данной изоклины.
Ниже приводится фрагмент программы на языке Fortran 95, которая создает входной файл для системы Latex. Этот файл перера-
батывается транслятором Latex в файл PDF, показанный на рисунке 1.
Интегральная кривая
Рис. 1. Изоклины дифференциального уравнения
! функция задает у-координату решения как функцию параметра t real function y (t) real t
y=t**2-2*t+2+C*exp (-t) end function у
! функция задает у-координату изоклины как функцию параметра t real function qy (t) real t
qy=-C1+t**2 end function qy
! х-координата для обеих кривых задается по умолчанию (x (t)=t)
! вывод 10 изоклин
N=10
do i=1, N
C1= (Cmax-Cmin)/N*i+Cmin call curve (-2.,2., q, qy,1000)
! вывод стрелок, задающих направление на изоклинах do k=0, kmax
2013/1
Proceedings of Petersburg Transport University
Проблемы высшего образования
213
call vector ($L1((/q (-2.+4./kmax*k), qy (-2.+4./kmax*k)/),& atan (C1),4.)) enddo enddo
! вывод частного решения C=-1.
call curve (-2.,2., q, y,1000, width=5)
3 Изображение трехмерных объектов
Опишем алгоритм, по которому строится трехмерное изображение на плоскости. Пусть X, Y и Z - оси декартовой системы координат, а оси £, и п задают плоскость S, называемую ниже экраном. Двухмерное изображение точки в пространстве строится как ее ортогональная проекция на экран, перпендикулярный линии наблюдения. Направление, под которым наблюдается объект, задается ненормированным вектором (а, в, у). Для получения, например, изометрической проекции можно принять а = в = у = -1. Ось £, считается (для определенности) лежащей в плоскости OXY, ось п ей ортогональна. Для удобства будем считать, что экран проходит через начало координат. Тогда экран задается уравнением
ах + в* + yz = 0.
При этом уравнения осей £, и п имеют вид
X _ у _ z x _ у _ z P -a 0, -ay -Py a2 +p2
соответственно. Так как плоскость S не должна быть параллельной плоскости OXY (ось £, - линия пересечения этих плоскостей), то
a2 + P2 ^ 0.
Для координат £, и п произвольной точки, имеющей в пространстве координаты (x, у, z), получены следующие выражения:
W) ц(Ы )
xp- ya
ТЙF'
-y(ax + Py) + (a2 + p2) z V(a2 +P2)(a2 +p2 +y2)'
Дополним формулы (3) случаем выбора экрана перпендикулярно оси OZ (а = в = 0; у ^ 0). В этом случае выбираем ось £, по оси ОХ, а ось п - по оси OY и полагаем £, = х и
п = у.
Изложенный алгоритм получения двухмерного изображения трехмерного объекта соответствует фотографированию с большого расстояния, когда размеры объекта малы по сравнению с ним. Положение камеры относительно своей оси выбирается так, что вертикальные объекты изображаются как вертикальные, т. е. параллельные оси п.
В данном пакете предусмотрено изображение пространственных кривых и выпуклых многогранников. В случае многогранников необходимо задать координаты вершин в трехмерном пространстве и грани, указывая номера трех вершин, которые находятся на каждой грани.
Программа автоматически вычисляет, какие вершины соединены ребрами. Также определяются ребра, скрытые при данном направлении наблюдения, при этом последние изображаются пунктиром. Возможно автоматизированное (программное) обозначение всех вершин многогранника. Кроме того, если задано уравнение некоторой плоскости, то программа также строит сечение многогранника этой плоскостью. Заданный многогранник можно перемещать и поворачивать в пространстве на произвольный угол 0 вокруг любой оси, заданной направляющими косинусами cx, cy, c. После поворота вершина с координатами x, y, z перемещается в точку с координатами [3]
x = (А + А - ^2 - А )x +
+2(А 0^ з + 2) У +
+2(-А 0^ 2 +^1^3) z; у = 2(-^0^3 + А^А) 2) x +
* +(^0 -А + А - А3 )У+
+2(А 0 А + А 2^3) z; z = 2(^0^ 2 + А4А3) x +
+2(-А 0 ^1 + А 2^3) У +
(А 02 -А12 - А 22 + А32) z.
ISSN 1815-588Х. Известия ПГУПС
2013/1
214
Проблемы высшего образования
Параметры Родриго-Гамильтона X X X Х3 вычисляются по формулам:
X 0 = cos(9 / 2);
Xj = cx sin(9 / 2);
X2 = cy sin(9 / 2);
X3 = cz sin(9 / 2).
На рисунке 2 изображен 15-гранник. Ниже приводятся фрагменты программы, обеспечивающие его двухмерное изображение.
с
А
Рис. 2. Многогранник
! Задание вектора, определяющего направление наблюдения SCREEN= (/-1,0.6, -0.8/)
! Задание координат вершин многогранника п=7
do k=1, n
V (:, k)= (/cos (2*pi/n*k), sin (2*pi/n*k),0./)
V (:, k+n)= (/cos (2*pi/n*k), sin (2*pi/n*k),1./) enddo
y (:,2*п+1)= (/0.,0.,2.3/)
! Задание граней через указание трех вершин do k=1, n
f_index (:)k)= (/k, mod (k, n)+l, k+n/)
enddo
do k=1, n
f_index (:, n+k)= (/2*n+1, n+k, n+mod (k,
n)+1/)
enddo
f_index (:,2*n+1)= (/1,2,3/)
! Задание секущей плоскости T= (/-0.5,1.,1.,0.4/)
На рисунке 3 приведено изображение кругового конуса, определяемого уравнением (8 - z) 2 = 4 (x 2 + у 2), и его сечения плоскостью x + 5z = 10.
z
Рис. 3. Коническое сечение Заключение
Результатом данной работы является пакет утилит, применение которого качественно расширяет возможности графики в системе Latex. Это достигнуто не прямым расширением графического пакета Latex, а использованием средств программирования языка Fortran 95 для создания входного файла типа tex. Язык Fortran 95 был выбран потому, что в нем содержатся удобные инструменты для работы со строками, с одной стороны, и он обладает мощными вычислительными возможностями, с другой. Таким образом, результат достигнут на стыке взаимодействия двух систем программирования: Latex и Compaq Visual Fortran.
Существенным преимуществом данного подхода является его способность к расширению путем создания новых процедур на основе уже написанных на Фортране.
Библиографический список
1. Набор и верстка в пакете Latex / С. М. Львовский. - М. : Космосинформ, 1995. - 374 с.
2. Современный Фортран / О. В. Бартеньев. - М. : ДиалогМифи, 2005. - 560 с.
3. Аналитическая механика / А. И. Лурье. -М. : Физматгиз, 1961. - 823 с.
2013/1
Proceedings of Petersburg Transport University