- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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 Casteljau
Перепишем производную кривой Безье, разбив последний член pi+1-pi на два:
Таким образом, производная кривой Безье - это разность двух кривых Безье степени n-1. Для простоты, пусть эти кривые будут C1(u) и C2(u):
Из этих определений получаем, что первая кривая C1(u) описывается контрольными точками p1, p2, ..., pn, а вторая кривая C2(u) описывается контрольными точками p0, p1, ..., pn-1. Производная равна:
Таким образом, теоретически, для того, чтобы вычислить производную p(u) для отдельного u, можно использовать алгоритм de Casteljau, чтобы вычислить C1(u) и C2(u). Затем, вычислив их разность и умножив на n, получим p'(u).
Теперь надо использовать алгоритм de Casteljau. Посмотрите на рисунок ниже. В левом столбце находятся все данные контрольные точки. Точка n0 дает точку p(u) на кривой, а отрезок, соединяющий (n-1)0 и (n-1)1 - это последняя ломаная в алгоритме de Casteljau. Фактически, n0 лежит на отрезке от (n-1)0 до (n-1)1, причем отношение расстояний между (n-1)0 и n0, и между (n-1)0 и (n-1)1 равно u.
Так как кривая C1(u) описывается контрольными точками 01, 02, ..., 0n, то, используя диаграмму (выше), можно видеть, что (n-1)1 - это точка на кривой C1(u). Соответственно, так как C2(u) описывается контрольными точками 00, 01, ..., 0(n-1), видно, что (n-1)0 - это точка на кривой C2(u). Таким образом, вектор C1(u)-C2(u) - это вектор от точки (n-1)0 до точки (n-1)1, а производная p(u) равна C1(u)-C2(u), умноженному на n.
Что из этого следует? Так как ломаная от (n-1)0 до (n-1)1 в алгоритме de Casteljau имеет то же направление, что и касательный вектор в точке p(u), она касательна кривой в p(u)! В итоге получаем, что
Последняя кривая, т.е. отрезок, в алгоритме de Casteljau, касательна кривой Безье в точке p(u). |
Пример на следующем рисунке поясняет это. Показана точка, для которой u = 0.5. Видно, что последний отрезок в сети de Casteljau касателен кривой в p(0.5).
Производные Высших Порядков [Higher Derivatives]
Вычисление производных высших порядков кривых Безье - дело несложное. Вспомним, что производная p(u) - это
Применяя формулу производной к этой кривой Безье, получим следующее, т.е. вторую производную исходной кривой:
Найдя p'(u) и p''(u), можно будет очень легко найти направляющую тройку веторов и кривизну в точке p(u). Производные высших порядков можно находить, рекурсивно применяя формулу производной.
Чтобы подробнее рассмотреть производные высших порядков, нужно ввести понятие конечной разности. Пусть конечная разность нулевого уровня Di0 описывается контрольными точками Pi для 0 <= i <= n. Затем, конечная разность первого уровня Di1 - это разность между элементами предыдущего уровня, т.е. нулевого (Di0):
Заметьте, что в разности первого уровня только n точек, на одну меньше, чем количество исходных контрольных точек. Еще точнее, первый уровень разности - это
Второй уровень разности описывается разностью точек первого уровня.
Второй уровень разности имеет n-1 точек. Повторяя эту процедуру, можно получить k-й уровень разности (см. ниже). В k-ом уровне разности n-k+1 точек.
С помощью такого обозначения можно описать производную довольно коротко. Прежде всего, перепишем p'(u) используя разности Di1:
Вычисляя производную p'(u), чтобы получить p''(u), получим формулу p''(u) с участием Di2:
Сделав то же самое с p''(u), получим формулу p'''(u) через Di3:
Продолжая в том же духе, можно получить k-ю производную p[k](u) через Dik:
Таким образом, чтобы вычислить k-ю производную p(u) для конкретного u, можно сначала вычислить разности Dik и применить алгоритм de Casteljau для нахождения точки, соответствующей u на кривой Безье, описываемой точками Dik. Говоря точнее, можно сгруппировать все Di0 в нулевой столбец, назначить стрелкам знаки (вверх (красные) +, вниз (синие) - ) для вычисления столбца 1 разностей Di1. Повторяем эту операцию до тех пор, пока не дойдем до столбца k, как показано ниже:
В конце концов, применив алгоритм de Casteljau к точкам столбца k при данном u, получим вектор p[k](u)!