- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [Uniformization]
- •Построение Кривых Безье
- •Что, если область u не [0.1]?
- •Краткий Итог
- •Нахождение точки на Кривой Безье: Алгоритм De Casteljau's
- •Вычисления
- •Рекурсивное Представление
- •Кривые Безье Касательны к их Первому и Последнему Сегменту.
- •Объединение Двух Кривых Безье с соблюдением c1-Непрерывности
- •Соотношение Между Производной и Алгоритмом de Casteljau
- •Производные Высших Порядков [Higher Derivatives]
- •Разбиение Кривой Безье
- •Зачем Это Нужно, блин ? [Why Do We Need Curve Subdivision?]
- •Базисные Функции b-spline: Определение
- •Два Важных Замечания
- •Какое Значение Имеют Коэффициенты?
- •Базисные Функции b-spline: Важные Свойства
- •Ni,p(u) - это многочлен p-й степени от u
- •Неотрицательность -- Для всех I, p и u, Ni,p(u) неотрицательно
- •Влияние Множественных УзлоFf
- •Примеры Вычислений
- •Простые Узлы
- •Множественные Узлы
- •Кривые b-spline: Определение
- •Кривые b-spline: Важные Свойства
- •Преимущества Использования Кривых b-spline
- •Кривые b-spline: Вычисление Коэффициентов
- •Кривые b-spline: Перемещение Контрольных Точек
- •Некоторые Полезные Следствия Свойства Сильного Ограничивающего Многоугольника
- •Кривые b-spline: Изменение Узлов
- •Замечание о Множественных Узлах
- •Производные Кривой b-spline
- •Фиксированные Кривые b-spline
- •Производные Высших Порядков
- •Nurbs: Мотивация
- •Nurbs: Определение
- •Два Прмых Следствия [Two Immediate Results]
- •Геометрическая Интерпретация.
- •Nurbs: Важные Свойства
- •Важные Свойства Базисных Функций nurbs
- •Неотрицательность -- для всех I и p, Ri,p(u) неотрицательно
- •Важные Свойства Кривых nurbs
- •Кривая nurbs p(u) - это кусочная кривая, каждый компонент которой - это рациональная кривая степени p
- •Фиксированная кривая nurbs p(u) проходит через две крайние контр. Точки p0 и pn
- •Nurbs: Изменение Весов
- •Углубленное Рассуждение
- •Кривые b-spline/nurbs: Введение Узла
- •Введение Одиночного Узла
- •Пример 1: Введение Узла на Узловом Интервале
- •Пример 2: Введение Узла в Существующем Простом Узле
- •Пример 3: Введение Узла в Существующем Множественном Узле
- •Введение Узла для Кривых nurbs
- •Кривые b-spline/nurbs: Множественное Введение Узла
- •Замечание (Наблюдение) I: Коэффициенты для Вычисления Новых Контр. Точек
- •Замечание [Наблюдение] II: Вычисление Новых Контрольных Точек
- •Вычислить первый столбец, второй столбец, ... И h-ый столбец;
- •Новым набором контр. Точек будут те, что ограничены пунктирным многоугольником.
- •Отсечение Углов
- •Алгоритм De Boor
- •Алгоритм De Boor для Кривых nurbs
- •Основные Понятия
- •Параметрические Поверхности
- •Неявные Поверхности
- •Особенности
- •Поверхности Безье: Построение [Construction]
- •Базисные Функции
- •Поверхности [Tensor] Произведения
- •Поверхности Безье: Важные Свойства
- •Изопараметрические Кривые
- •Граничные [Boundary] Кривые
- •Направление u и направление V
- •Поверхности [Tensor] Произведения: Возвращаемся к теме
- •Поверхности b-spline: Построение
- •Базисные Функции
- •Фиксированные, Закрытые и Открытые Поверхности b-spline
- •Поверхности b-spline: Важные Свойства
- •Выбор Параметров : Обзор [Parameter Selection Overview]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Алгоритм De Boor для Кривых nurbs
Алгоритм De Boor также работает для кривых NURBS. Просто умножаем каждую контр. точку на ее вес, преобразуя тем самым кривую NURBS в 4х-мерный B-spline, проводим вычисления по алгоритму de Boor над этой кривой B-spline, и затем проецируем ее обратно на 3D - пространство при помощи деления первых трех координат на четвертую.
Основные Понятия
Есть два типа поверхностей, обычно использующихся в системах моделирования, - это параметрические и неявные. Параметрические поверхности определяются набором трех функций, по одной на каждую координату:
f(u,v) = ( x(u,v), y(u,v), z(u,v) ),
где параметры u и v находятся в определенных границах. Для нашей цели мы будем брать значения u и v в пределах от 0 до 1. Таким образом, (u,v) - это точка в квадрате, определяемом точками (0,0), (1,0), (0,1) и (1,1) на коорд. плоскости uv. Следующий рисунок иллюстрирует это понятие.
Неявные поверхности, с другой стороны, определяются многочленом с тремя переменными:
p(x,y,z) = 0
Как и в случае с кривыми, если x(u,v), y(u,v) и z(u,v) - это многочлены, то параметрические поверхности не смогут описывать многие поверхности, которые могут быть описаны в неявном виде. Хороший пример - сфера. Можно легко проверить этот факт с помощью доказательства, использовавшегося в случае с окружностями. Если x(u,v), y(u,v) и z(u,v) - это рациональные многочлены (т.e. частное двух многочленов), то параметрические поверхности могут описывать сферы, эллипсоиды и многие другие поверхности. Тем не менее, как и кривые, многие неявные поверхности не имеют параметрической формы. Образно говоря, неявные поверхности "сильнее" параметрических.
Вот несколько технических терминов. Поверхности, имеющие вид многочлена (неявные) называются алгебраическими поверхностями. Высшая степень из всех членов многочлена - это степень алгебраической поверхности. Таким образом, сферы и все квадратичные поверхности - это алгебраические поверхности второй степени, а, например, тор - это алгебр. поверхность 4 степени. Далее показана алгебр. пов-ть 3 степени, неявное уравнение которой
8x2 - xy2 + xz2 + y2 + z2 - 8 = 0 :
Некоторые алгебр. пов-ти имеют рациональные параметрические формы, например, сферы и все квадратичные поверхности. Этот тип алгебраич. поверхностей называют рациональными алгебраическими поверхностями. Теоретически, если дана алгебраич. поверхность в рациональной параметрической форме, всегда можно избавиться от параметров u и v, чтобы результат был в неявном виде. Этот процесс (перевод из параметрического вида в неявный) называют имплиситизацией (гы гы. Ну как словечко? хе хе - прим. перев.) ( implicitization ). Тем не менее, не все алебраические поверхности являются рациональными. К сожалению, проверить, является ли алгебраическая поверхность рациональной, очень сложно, не смотря на то, что у алгебраической геометрии такие определяющие теоремы. С вычислительной точки зрения это невыполнимо.
Параметрические Поверхности
Параметрические поверхности, или, точнее, участки параметрических поверхностей, не используются по отдельности. Обычно, много таких участков объединяют вместе сторона к стороне, чтобы получить более сложную форму. Следующий рисунок показывает четыре участка поверхностей, объединенных вместе для получения в итоге большей по площади области:
Для того, чтобы вычислить касательный и нормальный векторы в точке (u,v) на области определения, нам нужны частные производные. Пусть параметрическая поверхность определяется так:
Частные производные по u и v - это касательные векторы в точке f(u,v):
На картинке слева - касательный вектор в направлении u, а справа - касательный вектор в направлении v. Нормальный вектор в f(u,v), n(u,v), равен векторному произведению этих частных производных по правилу правой руки:
Участок параметрической поверхности можно считать объединением (бесконечного числа) кривых. Есть много способов составления таких объединений кривых; но самый простой способ - так называемые изопараметрические [isoparametric] кривые. Дана параметрическая поверхностьf(u,v), если u сделать фиксированной, скажем, 0.1, и изменять v, то получим кривую на поверхности, координата u которой постоянна. Это изопараметрическая кривая в направлении v для u = 0.1. Соответственно, приняв v постоянным, равным какому-то значению, и изменяя u, получим изопараметрическую криву, у которой направление v постоянно. Таким образом, принимая u фиксированным в 0, 0.1, 0.1, ..., 0.9 и 1, мы получим 11 изопараметрических кривых f(0,v), f(0.1,v), f(0.2,v), ..., f(0.9,v) и f(1,v). Эти кривые развертываются в поверхность, если изменять u от 0 до 1 непрерывно. Аналогично, параметрические кривые, полученные при непрерывном изменении v дадут поверхность. Следующий рисунок показывает несколько изопараметрических кривых в обоих направлениях.
Эти изопараметрические кривые могут помочь в расчете поверхности. Во многих приложениях параметрическая поверхность делится на треугольники или полигоны. Затем эти треугольники и полигоны можно эффективно расчитать с помощью существующих графических библиотек, таких как OpenGL или PHIGS PLUS.
Вместо разделения поверхности на треугольники может быть проще разделить на треугольники область определения (u,v). Мы можем разделить u-направление на m сегментов точками u0=0, u1, ..., ui, ..., um=1 и разделить v-направление на n сегментов точками v0=0, v1, ..., vj, ..., un=1. Область делится на m×n прямоугольников, каждый из которых, в свою очередь, можно поделить на два треугольника.
Пусть ui и ui+1 - это две последовательные разделительные точки в направлении u, а vj и vj+1 - в направлении v, как показано выше. Имеем прямоугольник с вершинами (ui,vj), (ui+1,vj), (ui+1,vj+1) и (ui,vj+1). Есть два способа разделить его на трегольники, так как у него две диагонали. Сделаем, как показано на рисунке. Первый треугольник определяется точками (ui,vj), (ui+1,vj) и (ui,vj+1), а второй треугольник - точками (ui+1,vj), (ui+1,vj+1) и (ui,vj+1).
Возьмем треугольник, определяемый точками (ui,vj), (ui+1,vj) и (ui,vj+1). Эти три точки переходят в три точки на поверхности f(ui,vj), f(ui+1,vj) и f(ui,vj+1) с нормальными векторами n(ui,vj), n(ui+1,vj) и n(ui,vj+1). Теперь у нас есть три грани, у каждой из которых есть нормальный вектор. Этих трех частей информации достаточно для получения гладкого треугольника [to render the triangle smoothly]. В результате у нас есть метод для получения параметрической поверхности. Или, если хотите, у нас есть метод для получения набора треугольников, который приближается к форме данной параметрической поверхности. Эта аппроксимация не очень хороша, так как может получить очень большое количество треугольников, а некоторые из них могут быть в неправильных местоположениях, или, например, слишком маленькими. Эту ситуацию может исправить техника "адаптации". С помощью этого метода динамически изменяются размеры, количество и положения треугольников.