Вывод векторного изображения в формате Postscript

  • Вид работы:
    Отчет по практике
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    130,56 Кб
  • Опубликовано:
    2017-05-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Вывод векторного изображения в формате Postscript

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего образования

Томский государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)







Отчет по производственной и преддипломной практикам

Вывод векторного изображения в формате Postscript

Оглавление

Введение

. Актуальность автоматизации генерации изображения (задачи)

. Основные концепции языка PostScript

. Операторы языка PostScript

.1 Арифметические операторы

.2 Графические операторы

.3 Операторы изображения текстов

.4 Операторы циклов и условные операторы

Заключение

Список использованных источников

Введение


В современном мире все меньше операций производится вручную. А ту немногую часть операций, что еще не автоматизирована, пытаются облегчить для конечного пользователя. Это же касается и графических изображений. Есть мощные комбайны, такие как AdobePhotoshop, CorelDraw, AutoCAD. Но эти гиганты хороши для общего использования, но есть некоторые узкоспециализированные задачи, для которых намного удобнее и проще использовать утилиты, предназначенные для конкретной задачи. На многих предприятиях есть необходимость в создании похожих изображений, которые отличаются только некоторыми входными данными. И стандартные графические пакеты мало подходят для этих задач, так-как малейшее изменение некоторых входных данных приводит к необходимости полной перерисовки исходного изображения. К подобной ситуации можно отнести и предприятия, которые занимаются производством измерительных приборов. К примеру, при отрисовке циферблата для манометра необходима исключительная точность, и даже небольшое изменение некоторых данных приводит к необходимости полной перерисовки в стандартном графическом пакете, к примеру в AutoCAD. Именно поэтому и возникает необходимость в инструменте, который позволял бы автоматически генерировать заданное изображение без необходимости ручной отрисовки.

 

1. Актуальность автоматизации генерации изображения (задачи)


В современном мире одним из самых главных ресурсов человечества становится время. И много средств и умов направлено на автоматизацию различных процессов, которые в неавтоматизированном состоянии занимали много времени. Особенно этот вопрос актуален для различных промышленных предприятий, для которых каждая сэкономленная единица времени может быть пущена на увеличение производительности и на поднятие прибыли. Для предприятия всегда выгодно автоматизированное исполнение тех операций, на которых оно специализируется.

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

В измерительной технике крайне важна точность выводимых данных. Но для достижения подобной точности необходимы множественные расчёты, для того чтобы измерительная шкала манометра соответствовала фактическим показаниям стрелки манометра. Основными потребителями манометров компании ОАО "Манотомь" являются метрологические предприятия (центры стандартизации и метрологии, метрологические отделы крупных предприятий), машиностроительные и энергетические компании, нефтегазодобывающие и нефтеперерабатывающие предприятия, предприятия ЖКХ. И в подобных областях применения продукции предприятия ОАО "Манотомь" крайне важна точность, которая может быть обеспечена либо высококвалифицированным персоналом с большими временными затратами, либо с помощью автоматизации процесса формирования циферблата.

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

Рисунок 1.1 - Циферблат манометра

Для поставленной задачи наиболее подходящим способом является генерация изображения в формате PostScript. Рассмотрим несколько примеров для аргументации этого утверждения. На рисунке 1.2 изображен вывод программы, приведенной ниже. С помощью цикла программа формирует изображение расставляя заданное слово или символ с заданным углом отступа от предыдущего символа. Задаётся начальный угол, конечный угол и угол отступа.

25.4 div

100 translate

/Times-Roman findfont

scalefont

60 300 {

0 moveto

(Sample) show

} for

showpage

Рисунок 1.2 - Вывод изображения

В случае если встанет необходимость в редактировании исходного изображения, выполняя данную операцию в традиционных графических пакетах у специалиста уйдёт больше времени, чем редактирую исходный код в формате PostScript. Рассмотрим второй пример. К примеру, если будет необходимо изменить угол отступа между словами и само слово, редактируя исходный код мы получим желаемого результата намного проще и быстрее. На рисунке 1.3 изображено отредактированное изображения. Ниже приведен код измененного изображения. В итоге, изменив всего пару строк кода мы получили совершенно другое изображение. Для ручного редактирования исходного изображения у нас бы ушло намного больше времени, нежели при редактировании кода.

72 25.4 div

100 translate

/Times-Roman findfont

scalefont

30 330 {

0 moveto

(Example) show

grestore

} for

Рисунок 1.3 - Отредактированное изображение

2. Основные концепции языка PostScript


Язык PostScript был разработан в 1984 в компании Adobe Systems. Основные задачи, с которыми сталкивались разработчики языка Джон Уорнок и Чак Гешке - стандартизация и неизменность выводимой информации вне зависимости от используемого оборудования и программных средств.

Язык Postscript является языком описания страниц. Все изображения и символы на странице задаются с помощью циклов, математических формул и объектов. Данная особенность описания изображения позволяет обеспечить независимость выводимого результата от оборудования и программного обеспечения, выводящего конечное изображение. В связи с этим и обуславливается высокая популярность языка у компаний, занимающихся типографией. Эти особенности языка позволяют компаниям не задумываться о несовместимости оборудования и программного обеспечения.

Стек

Основа языка PostScript - стеки. Описание работы стека дается на примере работы монетницы. Стек - это особая область памяти, организованная по принципу "последний вошел - первый вышел".

Постфиксная нотация.

Язык PostScript использует постфиксную нотацию (обратная запись). Смысл такого способа записи состоит в том, что сначала записываются операнды, затем - операторы.

Единицы измерения.

PostScript использует свою единицу измерения - пункт (point), обозначаемую пт(pt). В одном стандартном дюйме (inch) помещается 72 пункта (pt).

В качестве угловой меры в PostScript используется градус (полная окружность = 360 градусов). Положительное направление углов - против часовой стрелки.

Структура PostScript - программы

PostScript - программа имеет в своем составе некие начальные и конечные служебные операторы, и собственно операторы рисования, между ними заключенные. Специальные комментарии начинаются с начала строки и имеют два символа %. Вот типичный пример структуры многостраничного ps-файла:

%!PS-Adobe-3.0 - указание на то, что это PostScript файл

%%Title: - название проекта

%%Creator: - создатель файла

%%CreationDate: - дата и время создания

%%For: - указание для кого создан файл

%%Copyright: - фирма или автор, имеющий права на файл

%%Documentfonts: - имена используемых фонтов

%%BoundingBox: - размер страницы

%%Pages: - число странниц

%%EndComments

%%BeginProcSet

%%EndProcSet

%%EndProlog

%%Page 1 1

команды описания первой страницы

showpage - указание интерпретатору, что больше команд не будет и страница полностью описана, и приказывает начать переводить описание в изображение

%%Page 2 2

команды описания второй страницы

showpage

%%Trailer

%%EOF

3. Операторы языка PostScript

 

.1 Арифметические операторы


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

add - вынимает два числа из стека, складывает их и возвращает их сумму;

sub - вынимает два числа из стека, вычитает их и возвращает их разность;

mul - вынимает два числа из стека, умножает их и возвращает их произведение;

div - вынимает два числа из стека, делит их и возвращает их частное.

 

.2 Графические операторы


Векторная графика всегда задается по координатам точек и отрезков. К координатам можно применять любые математические операции и значит эффективно изменять уже готовые рисунок. Ключевым понятием в PostScript является понятие траектории или контура. Контур делит плоскость рисунка на две части, слева и справа от себя. Контур можно обвести разными способами, замкнутый контур можно закрасить, контуром можно выделить часть нарисованной области. По этой причине в PostScript сначала задается контур, как объект. А уже потом специальные команды указывают, что с ними нужно делать.

Начало нового пути

Графические построения состоят из нескольких этапов:

инициализация нового графического пути;

построение графического пути с помощью графических операторов;

определение типа линии;

прорисовка линии вдоль построенного пути.

Оператор newpath начинает новый путь. Открывает новую траекторию как объект, курсор остается на месте.

Завершение пути

После построения пути вдоль него может быть проведена линия. Это осуществляет оператор stroke. Путь, кроме того, можно "закрыть", при этом от текущей точки до первой определенной в пути точки проводится прямая линия. "Закрывает" путь оператор closepath и траектория становится замкнутой.

Смещение текущей точки

Смещение текущей точки можно произвести двумя способами:

moveto смещает текущую точку в точку с указанными координатами (x,y);

rmoveto смещает текущую точку по вектору с указанными координатами (dx, dy).

Оператор начинающийся с буквы r, означает, что передаваемые ему координаты считаются не от начала координат, а от текущей точки.

Построение прямой линии

Построение прямой линии можно произвести двумя способами:

lineto проводит прямую линию от текущей точки в точку с указанными координатами;

rlineto проводит прямую линию от текущей точки в точку, отстоящую от нее на указанном расстоянии по горизонтали dxи по вертикали dy (по вектору с указанными координатами).

После выполнения этих команд, последняя точка прямой линии становится текущей точки.

Построение дуги окружности

Дуга окружности, или окружность, строится оператором arc.

Синтаксис: x0 y0 R a1 a2 arc.0y0 - координаты центра окружности;

R - радиус окружности;

a1a2 - начальный и конечный угол дуги окружности (0..360).

Угол 0 совпадает с положительным направлением оси ОХ. Особенность оператора: если текущая точка пути определена, то от нее до начальной точки дуги проводится прямая линия. После построения дуги, последняя ее точка становится текущей. Дуга всегда рисуется против часовой стрелки, независимо от соответствия углов друг другу.

Свойства линии

У линии можно задать несколько свойств: толщину, скругленность хвостиков, пунктирность, цвет и т.д. Толщину линии можно задать оператором setlinewidth, пунктирность оператором setdash, серость оператором setgray.

Смещение начала координат

При открытии страницы начало координат находится в левом нижнем углу. Оператор translate смещает начало координат в указанную точку.

Поворот координат

Оператор rotate поворачивает систему координат на произвольный угол (положительное направление - против часовой стрелки).

Использование пути в качестве маски

Если нужно применить преобразование к какому либо объекту, а потом отменить его применение к остальным объектам, то для этого существуют две команды gsaveиgrestore. Они сохраняют и восстанавливают текущие графические параметры.

Масштабирование

Если рисунок не помещается на страницы - его не требуется переделывать заново полностью, его достаточно масштабировать командой scale. Масштабирование производится по двум координатам - X, Y.

 

.3 Операторы изображения текстов


Текстовая строка задается набором символов в круглых скобках. Показывается текстовая строка командой show. Для рисования текста необходимо указать какое-либо имя шрифта и затем выполнить команду findfont, которая заставляет интерпретатор искать нужный файл. Шрифт нужно промасштабировать это делает команда scalefont. После этого команда setfont устанавливает данный фонт как текущий для рисования.

 

.4 Операторы циклов и условные операторы


Операторы циклов - обязательная конструкция вычислительных языков. В PostScript существует простой цикл, цикл с параметром и цикл по условию.

Оператор простого цикла называется repeat, он берет из стека два объекта: процедуру и число повторений, после этого он повторяет процедуру столько раз, какое значение имеет число.

При вычислении функций одной переменной с постоянным шагом часто используют цикл с параметром. Этот оператор называется for, он берет из стека четыре объекта: процедуру, конечное значение параметра, шаг по параметру, начальное значение параметра. Число повторений в нем не фигурирует и равно разности конечного и начального значений, деленной на шаг плюс один.

Условный оператор if, он берет из стека процедуру, затем логическую переменную, которая получается в результате проверки условия и сели логическая переменная равна true, то выполняет процедуру.

Более сложный оператор условия ifelse, он берет из стека вторую процедуру, затем первую процедуру и затем логическую переменную как результат выполнения условия. Если логическая переменная истинна, то выполняется первая процедура, а если нет, то выполняется вторая процедура.

Условный цикл организуется с помощью двух операторов loop, он берет из стека процедуру и выполняет ее сколько угодно раз, пока не встретиться вторая команда exit, которая прерывает цикл.

Условные операторы выполняет процедуру только в том случае, если условие истинно. Условие можно получить использую операции сравнения. В PostScript она записываются как:

-     eg - равно;

-        ne - не равно;

         gt - больше;

         ge - больше или равно;

         lt - меньше;

         le - меньше или равно.

Логические переменные, получаемые в результате проверки условий, можно объединять операциямиnot, orили xor.

 

Заключение

изображение отрисовка postscript автоматический

В ходе прохождения практики был изучен язык разметки страниц Postscript. На примере была доказана целесообразность использования данного языка для автоматизации процесса генерации изображения циферблата манометра.

 

Список использованных источников


. Первоначальное представление языка PostScript.[Электронный ресурс]. - Режим доступа: http://tex.anabar.ru/PostScript/books/articles/postscript.htm

. Язык программирования PostScript.[Электронный ресурс]. - Режим доступа: http://psdraw.narod.ru/ (дата обращения: 28.04.2017)

. Семь уроков по PostScript. [Электронный ресурс]. - Режим доступа: http://www.acrobat6.ru/7post/ (дата обращения: 28.04.2017)

Похожие работы на - Вывод векторного изображения в формате Postscript

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!