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



Скачать 41.45 Kb.
Дата12.11.2016
Размер41.45 Kb.
УДК 004.925.83 

ПРИМЕНЕНИЕ ФУНКЦИИ БЕЗЬЕ ДЛЯ РЕКУРСИВНОГО ПОСТРОЕНИЯ КРИВЫХ В РАСТРОВОЙ ГРАФИКЕ


Абдрахман С. Н.


Казахский национальный университет им. Аль-Фараби, Алматы
Научный руководитель – д.ф.-м.н., проф. Хаджиева Л. А.
Настоящая работа посвящена построению рекурсивных кривых в растровой графике. При объектном моделировании, описании траектории в анимации, построении графиков данных и функций, а также других графических приложениях могут оказаться полезными функции построения различных кривых.

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

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

Впервые кривые были представлены широкой публике в 1962 году французским инженером Пьером Безье, который, разработал их независимо от де Кастельо. Кривые были названы именем Безье, а именем де Кастельо назван разработанный им рекурсивный способ определения кривых (алгоритм де Кастельо) [2-6].

Представлены математические основы кривых Безье и алгоритмы их построения (алгоритм де Кастельо). В работе используется обобщение алгоритма де Кастельо на произвольное число точек.

Алгоритм де Кастельо для создания квадратичных параметрических представлений использует твининг по трем точкам, а для кубических представлений — по четырем точкам. Его можно легко обобщить на случай использования  контрольных точек: . Для каждого значения  строится последовательность «поколений», для формирования каждого из которых используется твининг соседних точек, созданных в предыдущем поколении. Тогда получим:




(1)



где . Верхний индекс  в выражении  обозначает номер поколения. Процесс начинается с  и заканчивается готовой кривой Безье . Результирующую кривую Безье можно записать в терминах полиномов Бернштейна следующим образом:
 (2)
где к-й полином Бернштейна степени  определяется как:
 (3)

а биномиальный коэффициент функции равен:



 (4)
При значение этого коэффициента равно нулю [3].

Разработаны программные коды формирования кривых Безье в среде OpenGL на языке С++. Ввиду ограниченности объема публикации они здесь не представлены.

В работе исследовано влияние параметров контрольных точек и порядка их соединения на вид формируемой поверхности (случаи а-г):
а) GLfloat ctrlpoints[4][4][3]={

{{7,-1.5,4.0},{-0.5,-1.5,2.0},{0.5,-1.5,-1.0},{1.5,-1.5,2.0}},

{{-1.5,-0.5,1.0},{-0.5,-0.5,3.0},{0.5,-0.5,0.0},{1.5,-0.5,-1.0}},

{{-1.5,0.5,4.0},{-0.5,0.5,0.0},{0.5,0.5,3.0},{1.5,0.5,4.0}},

{{-1.5,1.5,-2.0},{-0.5,1.5,-2.0},{0.5,1.5,0.0},{1.5,1.5,-1.0}}};

б) GLfloat ctrlpoints[4][4][3]={

{{7,-1.5,4.0},{-4,-1.5,2.0},{6,-1.5,-1.0},{3,-1.5,2.0}},

{{3,-0.5,1.0},{-0.5,-2,3.0},{0.5,-0.5,0.0},{6,-0.5,-1.0}},

{{-3.6,0.5,4.0},{-6,0.5,0.0},{0.5,2,3.0},{1.5,0.5,4.0}},

{{3,1.5,-2.0},{-0.5,1.5,-4},{0.5,1.5,0.0},{1.5,1.5,8}}};

в) GLfloat ctrlpoints[4][4][3]={

{{-4.5,-1.5,4.0},{1.5,-1.5,2.0},{0.5,-1.5,-1.0},{1.5,-1.5,2.0}},

{{-4.5,-0.5,1.0},{-0.5,-0.5,3.0},{0.5,-0.5,0.0},{1.5,-0.5,-1.0}},

{{-2.5,0.5,4.0},{4.5,0.5,0.0},{0.5,0.5,3.0},{1.5,0.5,4.0}},

{{1.5,1.5,-2.0},{-0.5,1.5,-2.0},{0.5,1.5,0.0},{1.5,1.5,-1.0}}};
г) GLfloat ctrlpoints[4][4][3]={

{{-7.5,-1.5,4.0},{-2.5,3.5,2.0},{0.5,-1.5,-1.0},{7,-1.5,2.0}},

{{-4.5,0.5,1.0},{2.5,0.5,2.0},{4,-0.5,7.0},{3.5,2.5,-3.0}},

{{3.5,0.5,4.0},{4.5,0.5,2.0},{1.5,0.5,-1.0},{1.5,0.5,4.0}},

{{1.5,1.5,6.0},{-0.5,1.5,-2.0},{0.5,7.5,0.0},{5,1.5,-1.0}}};
Для указанных случаев построена текстурированная поверхность Безье (рис.1).

Рассмотрены анимационные режимы построения 3D-изображений в виде спирали на основе вращения кривых Безье вокруг координатных осей (рис.2).

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

а) б)


в) г)


Рис.1. Текстурированная поверхность Безье.


Рис. 2 Анимационные кадры вращения кривой Безье.

Литература

  1. http://www.3dnews.ru/software/opengl

  2. Херн Д., Бейкер М. Паулин, «Компьютерная графика и стандарт OpenGL», «Вильямс», 2005, 1168 с.

  3. Хилл Ф. «OpenGL. Программирование компьютерной графики. Для профессионалов», «Питер», 2002, 1081 с.

  4. Роджерс Д., Адамс Дж. «Математические основы машинной графики», «Мир», 2001, 604 с.

  5. Эйнджел Э. «Интерактивная компьютерная графика. Вводный курс на базе OpenGL», 2001, 592 с.

  6. Максим Каверин «OpenGL. Официальное руководство программиста. OpenGL Red Book» (интернет).


База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница