Научная статья на тему 'Программный продукт для автоматизации графического приложения системы компьютерной верстки Latex'

Программный продукт для автоматизации графического приложения системы компьютерной верстки Latex Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
208
71
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОМПЬЮТЕРНАЯ ГРАФИКА / ТРЕХМЕРНАЯ ГРАФИКА / LATEX

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гарбарук В.В., Фоменко В.Н.

Кратко описан пакет утилит, созданный с помощью системы программирования Compaq Visual Fortran с целью расширения возможностей графических приложений системы компьютерной верстки Latex, широко применяемой для подготовки изданий различного формата. Описываемый продукт разработан на основе соединения средств форматирования и графики Latex и гибкого программирования и вычислительных возможностей языка Fortran 95. Данный пакет позволяет просто строить изображения, состоящие из многих повторяющихся или изменяющихся по определенному правилу элементов, производить автоматическую штриховку выделенной области, делать вставки форматированных объектов, например формул, в любую область рисунка. Пакет позволяет также создавать изображения трехмерных объектов, наблюдаемых вдоль заданного направления. Возможно автоматическое построение плоских сечений таких объектов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Software providing automation of graphic applications of the Latex typesetting system

The article presents a description of a program module built on the basis of the FORTRAN 95 programming system and aimed to enhance the graphic tools of the typesetting system Latex widely used recently for preparing publications of various format types. This module is developed by means of combination of the formatting and graphic facilities of Latex and programming and computational means of FORTRAN 95. As a result the program makes it possible easily to depict images eventually containing a large number of elements replicating themselves or changing consistently with a certain rule, automatically hatch a predefi ned area, insert formatted objects (formulae, for instance) into any part of the picture. Also the module allows imaging of 3-D objects as seen from the specifi ed direction. An automatic building of sections of such objects by a plane is possible as well.

Текст научной работы на тему «Программный продукт для автоматизации графического приложения системы компьютерной верстки Latex»

Проблемы высшего образования

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/)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.