- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Универсальный Метод
В 1999 году Choong-Gyoo Lim предложил интересный метод выбора параметров. В предыдущих методах мы находили параметры, а потом получали узловой вектор. Метод Lim, известный как универсальный метод, работает по-другому, используя равномерно распределенные узлы для вычисления параметров.
Допустим, нам нужны n+1 параметров, по одному на каждую исходную точку, а степень желаемой интерполтрованной кривой равна p. Затем, количество узлов равно m+1, где m = n + p + 1. Lim предложил равномерно распределить эти узлы. Говоря точнее, первые p+1 узлов равны 0, последние p+1 узлов равны 1, а оставшиеся n - p узлов равномерно делят область [0,1]. Таким образом, узлы равны:
Этот набор узлов фиксированного типа определяет n+1 базисных функций B-spline. Затем, параметры выбираются так, чтобы у них были значения, в которых соответствующие им базисные функции достигали максимума. Взгляните на следующий рисунок, где n = 6 (т.e. 7 исходных точек), p = 4, а m = 11 (т.e. 12 узлов). Так как мы используем фиксированные узлы, то 0 и 1 - это два узла множественности 5 (т.e. p+1) и есть только два внутренних узла в 1/3 и 2/3. Заметьте, что всего n+1 базисных функции B-spline, а максимумы первой и последней равны 0 и 1, соответственно. Другие максимумы помечены голубыми квадратиками, а параметры помечены желтыми кружками.
Приведем пример с расчетами вручную. Допустим, у нас есть 4 исходных точки (т.e. n=3) и степень p=2. Таким образом, количество узлов равно 7 (т.e. m = n + p + 1 = 6). Так как узлы равномерно распределены, то они равны
u0 = u1 = u2 |
u3 |
u4 = u5 = u6 |
0 |
0.5 |
1 |
Затем можно вычислить желаемые базисные функции B-spline. Начнем со степени 0 (т.e. p = 0). Нажмите тут, чтобы посмотреть определение базисных функций B-spline, и тут, для примеров по вычислениям. Полученные результаты:
Узловой интервал |
Базисная функция |
[u0,u1) = [0,0) |
N0,0(u) = 0 |
[u1,u2) = [0,0) |
N1,0(u) = 0 |
[u2,u3) = [0,0.5) |
N2,0(u) = 1 |
[u3,u4) = [0.5,1) |
N3,0(u) = 1 |
[u4,u5) = [1,1) |
N4,0(u) = 0 |
[u5,u6) = [1,1) |
N5,0(u) = 0 |
Затем вычисляем базисные функции 1 степени. Так как и N0,0(u), и N1,0(u) равно 0, то N0,1(u) везде равно нулю. Аналогично, N4,1(u) также равно нулю везде. Таким образом, для базисных функций 1 степени, нам нужно вычислить только N1,1(u), N2,1(u) и N3,1(u) как показано ниже:
Базисная Функция |
Уравнение |
Ненулевая Область |
N0,1(u) |
0 |
везде |
N1,1(u) |
1-2u |
[0,0.5) |
N2,1(u) |
2u |
[0,0.5) |
2(1-u) |
[0.5,1) |
|
N3,1(u) |
2u-1 |
[0.5,1) |
N4,1(u) |
0 |
везде |
Базисные функции 2 степени вычисляются следующим образом:
Базисная Функция |
Уравнение |
Ненулевая Область |
N0,2(u) |
(1-2u)2 |
[0,0.5) |
N1,2(u) |
2u(2-3u) |
[0,0.5) |
2(1-u)2 |
[0.5,1) |
|
N2,2(u) |
2u2 |
[0,0.5) |
-2(1-4u+3u2) |
[0.5,1) |
|
N3,2(u) |
(2u-1)2 |
[0.5,1) |
Следующий рисунок показывает все четыре базисные функции B-spline 2 степени.
Нетрудно проверить, что максимумы N0,2(u), N1,2(u), N2,2(u) и N3,2(u) равны 1 при u = 0, 2/3 при u = 1/3, 2/3 при u = 2/3 и 1 при u = 1. Таким образом, по универсальному методу, узловой вектор равен { 0, 0, 0, 0.5, 1, 1, 1} , а вектор параметров равен { 0, 1/3, 2/3, 1}. В данном случае у нас равномерно распределенные параметры. Тем не менее, в общем случае параметры не обязательно должны быть равномерно распределены, хотя распределение параметров обычно довольно ровное. Из-за этого факта универсальный метод работает похоже на метод равномерного распределения.
Из-за того, что узлы равномерно распределены, множественных узлов нет и все базисные функции являются Cp-1-непрерывными. Нажмите тут, чтобы узнать больше о непрерывности базисных функций B-spline. Таким образом, на практике, максимум базисной функции B-spline не нужно вычислять точно. Опыт показывает, что подбор некоторых значений на ненулевой области и затем выбор из них одного с максимальным значением функции обычно дает довольно точный результат. Если желательно найти точные максимумы, то можно использовать одномерный поиск, например, по методу золотого сечения. Область поиска - это, конечно, ненулевая область базисной функции B-spline.
У универсального метода есть очень интересное свойство. А именно - он является инвариантным для преобразований подобия. Это значит, что трансформированная интерполированная кривая B-spline может быть получена трансформированием исходных точек. Это похоже на свойство инвариантности преобразований подобия для кривых B-spline. Исходя из такого вывода, сразу можно сказать, что тем же свойством обладает и метод равномерного распределения, потому что узловой вектор вычисляется из набора равномерно распределенных параметров, которые неизменны до и после трансформации. Но например, метод длины хорды и центростремительный методы не являются инвариантными для преобразований подобия.