Реализация автоматического синтеза векторных узоров в допечатном процессе на языке VBA

УДК 655.26;004.92

С. В. Сипайло

Белорусский государственный технологический университет

РЕАЛИЗАЦИЯ АВТОМАТИЧЕСКОГО СИНТЕЗА ВЕКТОРНЫХ УЗОРОВ В ДОПЕЧАТНОМ ПРОЦЕССЕ НА ЯЗЫКЕ VBA

В статье рассмотрена программная реализация алгоритма синтеза симметричных узоров на зыке VisualBasic for Applications в среде CorelDRAW.

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

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

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

Ключевые слова: симметрия, векторная графика, синтез изображений, орнаменты

S. U. Sipaila

Belarusian State Technological University

IMPLEMENTATION AUTOMATIC SYNTHESIS OF VECTOR PATTERNS IN PREPRESS IN LANGUAGE VBA

The article describes the software implementation of the algorithm synthesis of symmetrical patterns in language VisualBasic for Applications in the environment CorelDRAW.

Subroutines of the basic symmetric transformations on a plane are written. On their basis the subroutine of synthesis of the ornamental rosettes as a transferable part of a background pattern and the subroutine of synthesis of mesh ornaments are written. As a base object for symmetric transformations the vector contour described by one of four functions is generated. Set and the order of transformations of a graphic element, quantitative values of their parameters are determined by the program automatically on the basis of the generator of random numbers.

The patterns generated in an automatic mode on the basis of one from four base elements, have various forms. To increase the quantity of variants of formed patterns it is possible to expand the list of functional dependences used for the description of a base element, and also to vary values of their factors. It is required to use parametrical functions for the description of the closed curvilinear contours.

The generated patterns can be used not only as a decorative element, but also as a means of protection against unauthorized reproduction as the recreating of the synthesized objects in a manual mode is very laborious.

Key words: symmetry, vector graphics, image synthesis, ornaments.

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

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

В предыдущей работе по синтезу векторных криволинейных контуров [2] была решена задача генерации базового криволинейного объ-

екта в виде кривой Безье, форма которого изначально описывается функциональной зависимостью вида y = fx). Также был разработан обобщенный алгоритм синтеза симметричных векторных узоров путем симметрических преобразований базового графического элемента. Алгоритм предполагает формирование симметричных подструктур за несколько циклов преобразований, состав и параметры которых могут варьироваться. На каждом этапе симметрических преобразований в качестве основы выступает текущий графический объект, форма которого с каждым новым циклом усложняется. При создании сложных составных узоров генерируется несколько подструктур, которые на завершающей стадии синтеза объединяются в одно изображение.

Разработанный алгоритм позволяет сформировать большое количество разнообразных по форме узоров. Вместе с тем задача реализации этого алгоритма в автоматическом режиме была выполнена не в полной мере. Для создания симметричных объектов на основе базового элемента в виде кривой Безье использовались средства автоматизации симметрических преобразований программы Omamentika [3], т. е. симметричный узор формировался в диалоговом режиме и параметры преобразований вводились вручную. Кроме того, программа Omamentika учитывала специфику белорусских орнаментов, в частности их дискретный характер и присущие им виды симметрии. По этой причине при ее использовании накладывались ограничения на количественные параметры преобразований и перечень задействованных операций симметрии. Для повышения степени автоматизации синтеза векторных узоров, а также разнообразия их формы и симметрии требуется разработка программных средств синтеза, лишенных упомянутых выше ограничений.

Основная часть. Для программной реализации синтеза использовался язык VisualBasic for Applications (VBA). В качестве базовой графической программы, возможности которой расширялись с помощью VBA, выступала программа векторной графики CorelDRAW. Такой подход к реализации синтеза продиктован более низкими временными затратами по сравнению с разработкой автономной программы, а также широким распространением CorelDRAW в сфере графического дизайна. При этом выбранный способ программной реализации синтеза полностью удовлетворяет пользователя с точки зрения элементов графического интерфейса (диалоговые окна, текстовые сообщения, панели инструментов).

Генерацию базового графического объекта на основе функциональной зависимости вида

y = fx) выполняет подпрограмма curve_b. Она использует один из четырех вариантов функции fx), представленных в виде программного кода. При необходимости перечень этих функций может быть расширен.

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

Для реализации симметрических преобразований сгенерированного объекта на плоскости (параллельных переносов, вращения, отражения) были написаны подпрограммы, которые оперируют непрерывно изменяющимися значениями параметров. К ним относятся следующие процедуры:

1) perenos — «-кратный параллельный перенос дубликатов графического объекта в произвольном направлении с заданным периодом;

2) rotate — «-кратный поворот дубликатов объекта относительно точки, смещенной от геометрического центра исходного объекта на заданное расстояние;

3) flip — отражение дубликата объекта на заданном расстоянии от геометрического центра исходного объекта.

Для реализации единичных движений в тексте этих подпрограмм использовались следующие макрокоманды CorelDRAW:

1) rotateEx — поворот графического объекта на заданный угол вокруг центра, координаты которого задаются в единицах длины относительно начала страницы;

2) duplicate — дублирование активного графического объекта со смещением дубликата относительно исходного положения по двум координатным осям на заданное расстояние;

3) flip — отражение графического объекта относительно линии, пересекающей его геометрический центр;

4) move — однократное смещение объекта на заданное расстояние по горизонтали и вертикали.

Также в тексте подпрограмм использовались макрокоманды для решения вспомогательных задач, таких как создание выделенного массива объектов (CreateSelection), добавление в массив выделенных объектов (AddToSelection), группировка объектов (Group), считывание габаритных размеров объекта (GetSize) и т. п.

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

1) flip_sliding — «-кратное скользящее отражение с заданным периодом относительно

оси, смещенной от центра объекта на требуемое расстояние;

2) perenos_2d — параллельный перенос дубликатов графического объекта вдоль перпендикулярных осей п раз с заданным периодом;

3) perenos_2dd — параллельный перенос дубликатов графического объекта вдоль осей, пересекающихся под произвольным углом, п раз с заданным периодом.

На основе разработанных подпрограмм была написана подпрограмма start_gen_roset для синтеза орнаментальной розетки как транслируемой части фонового узора. Алгоритм синтеза розетки, который был реализован в виде программного кода, приведен на рис. 1. В качестве исходного объекта Ь0 для последующих симметрических преобразований генерируется векторный контур, описываемый одной из четырех функций Ах). Перечень и порядок преобразований графического элемента, количественные значения их параметров определяются программой автоматически на основе генератора случайных чисел.

Рис. 1. Обобщенный алгоритм синтеза орнаментальной розетки

Для синтеза сетчатого узора путем трансляций сформированной розетки была написана

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

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

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

Для исключения случаев слишком близкого расположения объектов друг к другу либо, наоборот, наличия больших участков узора, не содержащих изобразительной информации, целесообразно при автоматическом определении количественных параметров преобразований учитывать размерные характеристики преобразуемого объекта. В соответствии с этим при работе программы выбор значений параметров производится на основе генератора случайных чисел в диапазоне, связанном с габаритными размерами активного объекта. Например, при выполнении операции параллельного переноса розеточного мотива по взаимно перпендикулярным направлениям величина периода колеблется в пределах от 0,5 до 1,2 размера транслируемого элемента. В то же время при синтезе самой розетки периодичность варьируется в ином числовом диапазоне, причем для переносов вдоль перпендикулярных осей и осей, расположенных под острым углом, этот диапазон также различен.

Для запуска пользователем программы генерации фоновых узоров используется такой элемент графического интерфейса, как окно, содержащее управляющие кнопки «синтез», «удалить», «выход». Кроме того, окно содержит так называемый «флажок» (checkbox) для выбора опции создания новой страницы при синтезе узора.

Примеры симметричных узоров, сформированных в автоматическом режиме, приведены на рис. 2.

т т т -о"

ж =8= ж =8= ж ш =5

ф ф =s= ф =5= ж

ф ф =В= ф =8= ф =3

ф =9= ф ф ф =3

ж ж =9= ж =8= ж =3

ж ж =8= ж =8= ж =3

ш ж =8= ж =8= ж =3

ж М ж ж ж N

5<г-о— 5г —¡г" 5г »5 <

$4?

JW^eF лЛЙ/^гГ "А/У^гГ

ЛГЧг -¿W^rf •JW^lrf

Jtfe,

jxM,

fcjf

jxM,

-ЛуЧ^ JXM,

Ы ^ Ы

¥

Рис. 2. Примеры симметричных узоров, сгенерированных автоматически

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

Заключение. Узоры, генерируемые программой, отличаются разнообразием формы, притом что в качестве основы для их синтеза использовался всего один из четырех базовых элементов. Для увеличения количества вариантов формируемых узоров можно расширить перечень функциональных зависимостей, используемых для описания базового элемента, а также варьировать значения их коэффициентов. Кроме того, для описания базового графического объек-

та, помимо функции вида у = Дх), можно использовать параметрические функции вида у = ДО, х = А?). Это позволит описать криволинейные контуры замкнутой формы.

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

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

подструктур, каждая из которых сформирована на основе своего базового элемента. При этом для достижения приемлемых эстетических ка-

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

Литература

1. Машинное орнаментирование / Т. В. Кочева [и др.]. Улан-Удэ: Изд-во БНЦ СО РАН, 1999. 160 с.

2. Сипайло С. В. Автоматизация синтеза векторных криволинейных контуров со свойствами симметрии в CorelDRAW // Труды БГТУ. 2014. № 9: Издат. дело и полиграфия. С. 3-7.

3. Сипайло С. В. Создание орнаментальных изображений с помощью встраиваемого программного модуля CorelDRAW // Труды БГТУ. Сер. IX, Издат. дело и полиграфия. 2007. Вып. XV. С. 17-20.

References

1. Kocheva T. V. [i dr.]. Mashinnoe ornamentirovanie [Machinery ornamentation]. Ulan-Udje: BNC SO RAN Publ., 1999. 160 p.

2. Sipaila S. U. Automation of synthesis of vector curved contours with symmetry properties in CorelDRAW. Trudy BGTU [Proceedings of BSTU], 2014, no. 9: Publishing and Printing, pp. 3-7 (In Russian).

3. Sipaila S. U. Creation of ornamental images using embedded software module CorelDRAW. Trudy BGTU [Proceedings of BSTU], 2007, series IX, Publishing and Printing, issue XV, pp. 17-20 (In Russian).

Информация об авторe

Сипайло Сергей Владимирович - кандидат технических наук, доцент кафедры полиграфических производств, Белорусский государственный технологический университет (220006, г. Минск, ул. Свердлова, 13а, Республика Беларусь). E-mail: svsip@tut.by

Information about the author

Sipaila Siarhei Uladzimiravich - Ph. D. Engineering, assistant professor of the Department of Printing Production, Belarusian State Technological University (13a, Sverdlova str., 220006, Minsk, Republic of Belarus). E-mail: svsip@tut.by

Поступила 06.03.2015