Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемwww.graphicon.ru
1 Кривые и поверхности высших порядков Астана 2004 Лекция 12
2 Кривые высших порядков: постановка задачи Задача: построить параметрическую кривую повторяющую заданную ломаную (на плоскости или в пространстве) - контрольные точки Для рисования кривая обычно разбивается на M точек - базисные функции (обычно полиномы некоторой степени)
3 Кривые высших порядков: примеры базисов Базис первого порядка для 5 контрольных точек Кривые Безье. Степень кривой = N - 1 Любая контрольная точка P i оказывает влияние на форму всей кривой Для большого количества точек степень кривой окажется тоже высокой. - полиномы Бернштейна
4 Кривые высших порядков: B-сплайны Задача: построить параметрическую кривую, форма которой изменяется локально при изменении одной из контрольных точек. Базисные функции рассчитываются по рекуррентным формулам Кокса-де Бура. p - степень B-сплайна.
5 Открытый узловой вектор Равномерный вектор: t = [ ] p+1 N + p + 1 N = 4, p = 3N = 7, p = 3t = [ ]
6 Периодический узловой вектор Равномерный вектор: t = [ ] p+1 N + p + 1 N = 4, p = 3N = 7, p = 3
7 Повторяющиеся узлы t = [ ] N = 7, p = 3
8 Расчет производных Коэффициенты при степенях постоянны на каждом из интервалов узлового вектора: Формулы для вычисления получаются из формул Кокса-де-Бура
9 Рациональные сплайны Рациональный сплайн является проекцией обычного сплайна из пространства более высокой размерности (см. однородные координаты) w > 0 является веcом вершины. Чем больше вес, тем большее влияние вершина оказывает на форму кривой. Формулы для пересчета нормалей оказываются неверными.
10 B-Spline поверхности Поверхность строится на основе двух наборов базисных функций Край поверхности является В-сплайном, который определяют граничные контрольные точки (для открытого базиса)
11 Литература Роджерс Д., Адамc Дж. Математические основы машинной графики. vprat. ifrance.com - статься про NURBS Копия этой статьи на сайте cg.cs.msu.su :)
12 Вспомогательная библиотека GLU Входит в состав OpenGL и основана на командах OpenGL Функции GLU можно разделить на четыре класса Вспомогательные функции (gluPerspective, gluLookAt, …) Функции для рисования базовых геометрических объектов: сферы, цилиндра, круга и сектора круга. Функции для разбиения невыпуклых многоугольников Функции для работы с кривыми и поверхностями NURBS
13 Рисование геометрических объектов (1/2) Перед началом рисования необходимо создать объект GLUQuadricObj, хранящий режимы рисования объектов GLU GLUquadricObj *obj = gluNewQuadric(); Для управления режимами рисования предназначены следующие функции: gluQuadricDrawStyleКаркасный или сплошной режим рисования gluQuadricOrientation Направление нормалей gluQuadricNormals Режим расчета нормалей gluQuadricTextureРассчитывать или нет текстурные координаты gluQuadricNormals(obj, GL_FLAT);
14 Рисование геометрических объектов (2/2) disk partial disk sphere Для рисования объектов предназначены функции gluSphere, gluCylinder, gluDisk и gluPartialDisk. gluSphere(obj, 1.0, 20, 10); Когда объект не нужен, память можно освободить gluDeleteQuadric(obj);
15 Рисование кривых и поверхностей NURBS (1/2) Перед началом рисования кривой или поверхности NURBS необходимо создать объект для хранения режимов построения NURBS GLUnurbsObj *obj = new gluNewNurbsRenderer(); При помощи функции gluNurbsProperty можно задать режим разбиения, режим рисования и режимы отсечения кривых и поверхностей. Предусмотрены следующие режимы разбиения кривых и поверхностей: 1. Постоянный шаг по параметрам u и v 2. Адаптивное разбиение в зависимости от длины кривой/площади поверхности на экране. 3. Адаптивное разбиение в зависимости от ошибки аппроксимации
16 Рисование кривых и поверхностей NURBS (2/2) Рисование кривой NURBS Между командами gluBeginCurve и gluEndCurve вызываются команды gluNurbsCurve для задания массивов контрольных точек, а также нормалей, цветов и текстурных координат вершин. Рисование поверхности NURBS Между командами gluBeginSurface и gluEndSurface вызываются команды gluNurbsSurface для задания массивов контрольных точек, а также нормалей, цветов и текстурных координат вершин.
17 Алгоритм Брезенхема (1/4) Отрезок, соединяющий P(x1, y1) и Q(x2, y2)
18 Алгоритм Брезенхема (2/4) F(x,y) = 0 -- точка на отрезке F(x,y) < 0 -- точка выше F(x,y) > 0 -- точка ниже Точка P определена, тогда координаты срединной точки и значение функции в этой точке
19 Алгоритм Брезенхема (3/4) Если d < 0, то выбирается Е и Если d 0, то выбирается NE В начальной точке
20 Алгоритм Брезенхема (4/4) Одна неприятность -- деление на 2 Чтобы избежать вещественной арифметики, сделаем преобразование d 0 = = 3 > 0 (NE) d 1 = = -1 < 0 (E) d 2 = = 9 (NE) d 3 = = 5 (NE) d 4 = = 1 (NE) d 5 = = -3 (E) d 6 = = 7 (NE)
21 Алгоритм Брезенхема (1/4) (окружность) Неявное и явное представление Параметрическое представление
22 Алгоритм Брезенхема (2/4) (окружность)
23 Алгоритм Брезенхема (3/4) (окружность) Для точки P c коорд. Для пиксела Е: Для пиксела SE:
24 Алгоритм Брезенхема (4/4) (окружность) В начальной точке5 (0, R) И опять нужно исключить вещественные операции. Сделав замену h = d-1/4, получим h = 1-R. Тогда необходимо сравнивать h с -1/4, но так как приращения d – целые числа, то сравнивать можно с нулем.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.