- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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/nurbs: Введение Узла
Значение введения узла в добавлении нового узла в существующий узловой вектор без изменения формы кривой. Этот новый узел может быть равен существующему и тем самым увеличить его множественность на единицу. Из-за фундаментального равенства m = n + p + 1, после введения нового узла значение m увеличивается на единицу и, следовательно, либо количество контр. точек, либо степень кривой нужно увеличить на единицу. Изменение степени изменит форму всей кривой, а это нам не подходит. Поэтому вместо этого добавляем контр. точку. Фактически, некоторые существующие контр. точки удалятся и заменятся новыми при отсечении углов.
Хотя введение узла не выглядит очень интересным, оно является одним из самых важных алгоритмов для кривых B-spline и NURBS, так как многие прочие полезные алгоритмы будут основываться на введении узла. Таким образом, начинаем с алгоритмов введения узла. Далее идет алгоритм введения единичного узла.
Ниже на рисунке слева показана фиксированная кривая B-spline 4 степени с равномерно распределенными узлами. На рисунке справа показан результат введения узла u = 0.5. Как видите, форма кривой не изменилась; тем не менее, изменилась исходная контр. ломаная. Фактически, четыре новых контр. точки (показаны красным) заменили старые контр. точки p4, p5 и p6, а три отрезка (показаны желтым) отсекли углы в p4, p5 и p6.
Введение Одиночного Узла
Дана последовательность n+1 контр. точек p0, p1, ..., pn, узловой вектор из m+1 узлов U = { u0, u1, ..., um } и степень p, нам нужно ввести новый узел t в узловой вектор без изменения формы кривой B-spline.
Пусть новый узел t лежит на узловом интервале [uk, uk+1). Из свойства сильного огранич. многоугольника p(t) лежит в огранич. многоугольнике контр. точек pk, pk-1, ..., pk-p, а все остальные базисные функции равны нулю. Отсюда, расчет введения узла можно ограничить контр. точками pk, pk-1, ..., pk-p. Способ введения t - это нахождение p новых контр. точек qk на сегменте pk-1pk, qk-1 на сегменте pk-2pk-1, ..., и qk-p+1 на сегменте pk-ppk-p+1, чтобы старая ломаная от pk-p до pk (показана черным) заменилась на pk-pqk-p+1...qkpk (показана оранжевым) путем отсечения углов в вершинах pk-p+1, ..., pk-1. Все остальные контр. точки остаются без изменений. Заметьте, что p-1 контр. точек исходной ломаной удаляются и змаеняются на p новых контр. точек.
К счастью, положения новых контр. точек qi легко рассчитать. Формула для вычисления новой контр. точки qi на сегменте pi-1pi следующая:
,
где отношение ai определяется так:
В итоге, чтобы ввести новый узел t, мы сначала находим узловой интервал [uk, uk+1) , на котором лежит этот новый узел. С найденным k можно найти p новых контр. точек qk-p+1, ..., qk по вышеуказанной формуле. В конце концов, исходная ломаная от pk-p до pk заменяется на новую, построенную по точкам pk-p, qk-p+1, qk-p+2, ..., qk-1, qk и pk. Заметьте, что после введения нового узла узловой вектор становится равен u0, u1, ..., uk, t, uk+1, ..., и um. Если новый узел t равен uk, то множественность uk увеличивается на единицу.
Вышеуказанную схему вычислений можно проиллюстрировать с помощью следующей диаграммы. Сначала переписываем все зависимые точки в столбец слева. Затем рассчитанные новые контр. точки пишем во второй столбец. Заметьте, их количество меньше на единицу. Для вычисления новой контр. точки qi, где k-p+1 <= i <= k, нужно две исходных точки pi-1 и pi с коэффициентами 1-ai и ai, соответственно. После вычисления мы будем использовать точки, окруженные синей точечной линией, чтобы заменить те, которые вне области. Все не зависмиые от этого точки сохраняются. Таким образом, исходная последовательность точек pk-p, pk-p+1, ..., pk-1, pk заменяется на pk-p, qk-p+1, ..., qk-1, pk.
Посмотрим на геометрическую интерпретацию ai. Из определения ai - это отношение, в котором разделен интервал [ui, ui+p) значением t, как показано ниже:
Есть k значений ai, каждое из которых покрывает p узловых интервалов (т.e. [ui, ui+p) ). Если соединить эти интервалы вместе и выровнять [align at] в значении t, получим следующую диаграмму:
Таким образом, положение t делит узловые интервалы [uk, uk+p), [uk-1, uk+p-1), ..., [uk-p+1, uk+1) в отношениях ak, ak-1, ..., ak-p+1, которые, в свою очередь, дают те же отношения в делении сегментов pkpk-1, pk-1pk-2, ... pk-ppk-p+1.