- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Поверхности b-spline: Важные Свойства
Здесь перечисляются некоторые важные свойства поверхностей B-spline. Эти свойства можно легко проверить, используя те же методы, что и для кривых B-spline. Пожалуйста, сравните эти важные свойства со свойствами кривых B-spline. Вспомним уравнение поверхности B-spline:
,
где степени в направлениях u и v равны p и q, и есть m+1 рядов и n+1 столбцов контр. точек.
Неотрицательность: Ni,p(u) Nj,q(v) неотрицательно для всех p, q, i, j и u и v в пределах от 0 до 1. Это очевидно.
Деление Единства: Сумма всех Ni,p(u) Nj,q(v) равна 1 для всех u и v в пределах от 0 до 1. Говоря точнее, это значит, что для любой пары чисел u и v в пределах от 0 до 1, выполняется следующее:
Свойство Сильного Огранич. Многоугольника: если (u,v) лежит на [ui,ui+1) x [vj,vj+1), то p(u,v) лежит в огранич. многоугольнике контр. точек ph,k, где i-p <= h <= i и j-q <= k <= j. Это свойство для поверхностей B-spline следует прямо из свойства сильноог огранич. многоугольника для кривых B-spline. Для направления u, если u лежит на [ui,ui+1), то существует самое большее p+1 ненулевых базисных функций, а именно Ni,p(u), Ni-1,p(u), ..., и Ni-p,p(u). Таким образом, только контр. точки на рядах с i-p-го по i-й имеют ненулевые базисные функции в направлении u. Аналогично, если v лежит на [vj,vj+1), то существует самое большее q+1 ненулевых базисных функций на этом узловом интервале, а именно Nj,q(v), Nj-1,q(v), ..., и Nj-q,q(v). Таким образом, только контр. точки на столбцах с j-q-го по j-й имеют ненулевые базисные функции в направлении v. Объединяя два этих факта, получаем, что только контр. точки в пределах от ряда i-p до ряда i и от столбца j-q до столбца q имеют ненулевые базисные функции. Так как эти базисные функции неотрицательны и их сумма равна единице (свойство деления единства), то p(u,v) лежит в огранич. многоугольнике этих контр. точек.
В итоге, элемент поверхности, определенный на прямоугольнике [ui,ui+1) x [vj,vj+1), лежит полностью в том же огранич. многоугольнике.
Схема Локального Изменения: Ni,p(u)Nj,q(v) равно нулю, если (u,v) находится снаружи прямоугольника [ui,ui+p+1) x [vj,vj+q+1) Из свойства схемы локального изменения мы знаем, что в направлении u Ni,p(u) не равно нулю на [ui,ui+p+1), а в остальных случаях равно нулю. Схема локального изменения для поверхностей B-spline идет прямо от того же свойства кривых. Если контр. точка p3,2 перемещается в новое положение, это показано на следующих рисунках, то только область вокруг этой точки изменяется, а вся остальная поверхность остается неизменной.
p(u,v) имеет непрерывность Cp-s (соотв., Cq-t) в направлении u (соотв., v), если u (соотв., v) - это узел множественности s (соотв., t).
Инвариантность при Подобных [Affine] Преобразованиях То же самое, что и для кривых - применение преобразований к контр. точкам идентично прменению преобразований к уравнению поверхности.
Свойство Уменьшения Изменчивости: Нифига подобного для поверхностей.
Если m = p, n = q, а U = { 0, 0, ..., 0, 1, 1, ...., 1 }, то поверхность B-spline становится поверхностью Безье.
Поверхности B-spline: Алгоритм de Boor
Так как вы уже знаете алгоритм de Casteljau для поверхностей Безье, то алгоритм de Boor для поверхностей B-spline и его модификация для поверхностей NURBS - это чуть-чуть посложнее. Фактически, принимая во внимание свойство локального изменения, алгоритм de Boor выглядит очень похожим на алгоритм de Casteljau. Если уравнение поверхности B-spline переписать следующим образом:
,
то для фиксированного i, выражение для кривой в скобках - это просто кривая B-spline, определяемая контр. точками ряда i. Чтобы упростить наше рассуждение, примем (ага, и закусим : ) - прим. перев.)
Таким образом, qi(v) - это точка, соответствующая v на кривой B-spline, определяемой точками на i-м ряду. Если v лежит на узловом интервале [vd,vd+1), то только q+1 контр. точек на ряду i участвуют в вычислении qi(v), где q - это степень Nj,q(v). Эти контр. точки - это pi,d, pi,d-1, ..., pi,d-q, если v не равно vd. В другом случае, если v равно vd, узлу множественности t, то участвующие точки - это pi,d-t, pi,d-t-1, ..., pi,d-q. Таким образом, используя контр. точки с столбца d-q по столбец d-t, где t равно нулю, если v - это не узел, мы можем применить алгоритм de Boor к каждому ряду, чтобы получить m+1 новых точек q0(v), q1(v), ..., qm(v). Это показано на следующей схеме.
Подставляя эти новые точки обратно в уравнение поверхности, получим следующее
Таким образом, p(u,v) - это точка на кривой B-spline, определяемой точками q0(v), q1(v), ..., qm(v). В итоге, чтобы найти p(u,v), все, что нужно сделать - это найти точку на кривой, которая соответствует u. Отсюда, алгоритм de Boor снова подходит для этой цели.
Пусть u лежит на узловом интервале [uc,uc+1). По свойству локального изменения, только p+1 контр. точек будут участвовать в вычислениях, где p - это степень кривой B-spline. Таким образом, если u не равно uc, то зависимые точки - это qc(v), qc-1(v), ...., qc-p(v). В другом случае, если u равно uc, узлу множественности s, зависящие точки - это qc-s(v), qc-s-1(v), ..., qc-p(v). Основываясь на этом наблюдении, хоть из каждого ряда получается qi(v), не все они нужны. Фактически, нужен только p+1 ряд. Это показывает следующая схема:
В итоге, если дано u на [uc,uc+1) и v на [vd,vd+1), p(u,v), для ряда i в пределах между c-p и c-s, применение алгоритма de Boor к контр. точкам pi,d-q, pi,d-q+1, ..., pi,d-t дает новую точку qi(v). Затем, применяя алгоритм de Boor к qc-p(v), qc-p+1(v), ..., qc-s(v) и результат - это p(u,v)!
В итоге, получаем следующее:
Вход: набор m+1 рядов и n+1 столбцов контр. точек, узловые векторы в направлениях u и v и значение (u,v); Выход: точка p(u,v) на поверхности Алгоритм:
Пусть u лежит на [uc,uc+1); Пусть v лежит на [vd,vd+1); Если u не равно uc, примем s равным нулю; иначе s будет множественностью uc; Если v не равно vd, примем t равным нулю; иначе t будет множественностью vd; for i := c-p to c-s do
begin
Применяем алгоритм de Boor к контр. точкам pi,d-q, pi,d-q+1, ..., pi,d-t относительно v; Пусит результат будет qi(v);
end
Применяем алгоритм de Boor к точкам qc-p(v), qc-p+1(v), ..., qc-s(v) относительно u; Полученная точка - это p(u,v);
Следующий рисунок иллюстрирует пример. Это поверхность B-spline, определяемая 5×5 контрю точками и узловым вектором (в обоих направлениях) { 0, 0, 0, 0, 0.5, 1, 1, 1, 1 }. Таким образом, степень кривой в обоих направлениях равна 3.
На этом рисунке ни u, ни v не являются узлами, а u меньше 0.5, так какv больше 0.5. Для этого v, так как оно лежит на [0.5, 1), только контр. точки pi,1, pi,2, pi,3 и pi,4 участвуют в расчете по алгоритму de Boor. Так как u лежит на [0,0.5), то в направлении u используются только ряды 0, 1, 2 и 3. На рисунке красные ломаные нужны для вычисления значений qi(v), а единственная синяя ломаная - для вычисления точки на поверхности.