- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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. Схема локального изменения, обсуждавшаяся ранее, говорит о том, что изменение позиции контр. точки pi влияет на кривую p(u) только на промежутке [ui, ui+p+1), где p - это степень кривой B-spline. Фактически, измененние формы является переместительным в направлении смещенной контр. точки. Говоря точнее, если контр. точка pi сместилась в каком-то направлении а новое положение qi, то точка p(u), где u лежит на [ui, ui+p+1), сместится в том же направлении от pi до qi. Тем не менее, расстояние смещения различается среди разных точек. На следующих рисунках, контр. точка p4 перемещается из положения на первом рисунке в новое положение, показанное на среднем рисунке, и затем в конечное положение (правый рисунок). Как видите, точки, соответствующие узлам (помечены тпеугольниками), перемещаются в том же направлении.
Давайте присмотримся детальнее. Допустим, p(u) - это данная кривая B-spline степени p, определяемая как
Пусть контр. точка pi перемещается в новое положение pi + v. Тогда новая кривая B-spline степени p имеет вид:
Таким образом, новая кривая C(u) - это просто сумма исходной кривой p(u) и вектора переноса Ni,p(u)v. Так как Ni,p(u) не равно нулю на интервале [ui,ui+p+1), то, если u не на этом интервале, то член выражения, отвечающий за перенос, равняется нулю и не влияет на форму кривой. Таким образом, для кривых B-spline, перемещение контр. точки влияет только на форму одной секции. Изображенная ниже кривая слева - это кривая B-spline 4 степени (т.e. p = 4), построенная по 13 контр. точкам (т.e. n = 12) и 18 узлам (т.e. m = 17). Эти 18 узлов являются простыми и описывают фиксированную кривую (т.e., u0 = u1 = u2 = u3 = u4 = 0 и u13 = u14 = u15 = u16 = u17 = 1). Остальные узлы образуют 9 узловых интервалов, и, следовательно, 9 отрезков кривой, как показано на рисунке. Эти девять узловых интервалов и отрезков кривой обозначены так:
Интервал |
[u4,u5) |
[u5,u6) |
[u6,u7) |
[u7,u8) |
[u8,u9) |
[u9,u10) |
[u10,u11) |
[u11,u12) |
[u12,u13) |
Отрезок |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Теперь давайте переместим p6. Результат показан на рисунке справа. Как видите, кривая сместилась в том же направлении, что и контр. точка p6. Коэффициент при p6 - это N6,4(u), а это не равно нулю на [u6, u11). Таким образом, перемещение p6 влияет на отрезки кривой 3, 4, 5, 6 и 7. Отрезки 1, 2, 8 и 9 остаются неизменными.
Некоторые Полезные Следствия Свойства Сильного Ограничивающего Многоугольника
Вспомним из свойства сильного ограничивающего многоугольника, что, если u лежит на [ui,ui+1), то p(u) лежит в ограничивающем многоугольнике, описываемом контр. точками pi, pi-1, ..., pi-p+1, pi-p. Это поможет нам решить следующие задачи в проектировании кривых:
Сделаем криволинейный отрезок отрезком прямой: пусть p+1 контр. точек будут коллинеарными Если u лежит на узлово интервале [ui,ui+1), то p(u) лежит внутри ограничивающего многоугольника для p+1 контрольных точек pi, pi-1, ..., pi-p+1, pi-p. Так как это верно для всех u на этом интервале, то отрезок кривой, находящийся на этом узловом интервале, лежит целиком в этом оганичивающем многоугольнике. Все эти p+1 контрольных точек являются коллинеарными (т.e. лежат на одной прямой), ограничивающий многоугольник вырождается в отрезок прямой, то же самое. происходит и с содержащимся в нем отрезком кривой. В итоге, отрезок кривой на узловом интервале [ui,ui+1) становится отрезком прямой. Заметьте, что в этом случае отрезком прямой становится только этот отрезок кривой. Остальные отрезки остаются криволинейными.
А вот вам и пример. На рисунках изображены кривые, для которых n = 15 (т.e. 16 контр. точек), p = 3 (степень равна 3), а m = 19 (т.e. 20 узлов). Заметьте, что первые четыре и последние четыре фиксированы. На рисунке слева в верхнем ряду исходная кривая. Давайте-ка сделаем p9, p8, p7 и p6 колинеарными. Таким образом, отрезок кривой [u9,u10) лежит внутри огр. многоугольника точек p9, p8, p7 и p6. Так как этот многоугольник является отрезком прямой, то криволинейный отрезок также становится линейным. Но надо помнить, что первые четыре узла фиксированы и поэтому первых трех узловых интервалов нет. Так как [u9,u10) - это седмой узловой интервал, седьмой сегмент вырождается в отрезок прямой p7p8. Это показано на втором, третьем и четвертом рисунках.
Но почему вырождается только отрезок кривой на [u9,u10) ? Взгляните на второй рисунок. Темная область - это огранич. многоугольник прямо перед вхождением u в [u9,u10). Этот огранич. многоугольник образуется точками p8, p7, p6 и p5, и еще не является отрезком прямой. Как только u входит в [u9,u10), отрезок кривой вырождается (третий рисунок). Сразу после того, как u выходит из [u9,u10), появляется новый огранич. многоугольник (четвертый рисунок).
На пятом рисунке p5 коллинеарна со следующими за ней четырьмя точками. На этой кривой еще один линейный отрезок. На шестом рисунке p10 коллинеарна с предшествующими ей пятью точками; тем не менее, она перемещена в положение между p8 и p9. Это должно сделать часть соответствующего отрезка кривой линейным (почему?)
Сделаем так, чтобы кривая B-spline проходила через контрольную точку: пусть p смежных контрольных точек будут одинаковыми Возьмем контр. точку pi. Так как отрезок кривой на узловом интервале [ui, ui+1) лежит целиком внутри огранич. многоугольника точек pi, ..., pi-p+1,pi-p, то, если сделать первые p контр. точек одинаковыми (т.e. pi = pi-1 = ... = pi-p+1), то огр. многоугольник сожмется до отрезка прямой pi-ppi, а кривая должна будет пройти через точку pi.
Степень кривой на левом рисунке равна 3. Если p5 переместить и сделать одинаковой с p6, кривая сместится ближе к p6, но все же не пройдет через нее. Это показано на среднем рисунке. Заметьте, что количество отрезков кривой от этого перемещения не изменяется; тем не менее, маленькая треугольная отметка рядом с p5 двигается ближе кp6.
Если p4 сместить и сделать одинаковой с p6 = p5, кривая пройдет через p6, а точка, соответствующая узлу, станет идентичной контрольной точке p4 из-за этого перемещения.
Сделаем кривую B-spline касательной сегменту контрольной ломаной: пусть pi-p, pi-p+1 = pi-p+2 = .... = pi-1 = pi и pi+1 будут коллинеарны Здесь p контр. точек делаются одинаковыми. В этой контрольной точке непрерывность C0, потому что кривая имеет точку перегиба (или пересечения? блин) (смотри правый рисунок). Тем не менее, когда все узлы простые, кривая является Cp-1-непрерывной в узлах и бесконечно дифференцируемой в остальных местах, поэтому она является Cp-1-непрерывной в контрольнйо точке pi (сжатая контр. точка, перенумерованная в i) на сегменте pi-ppi, а также Cp-1-непрерывной в контрольной точке pi на сегменте pipi+1. Таким образом, если сделать контр. точки pi-p, pi и pi+1 колинеарными, то из-за того, что два смежных отрезка кривой не имеют точки перегиба в узле, они будут Cp-1-непрерывными в pi.
На рисунках выше - кривые 2 степени. Если сделать контр. точки 2, 3, 4 и 5 колинеарными, а 3 и 4 совместить, получим правый рисунок. Колинеарность делает отрезок кривой лежащим на прямой, а совмещенные контр. точки дают C3-1 = C2-непрерывность.
