- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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 степени (p,q), определяемая e+1 рядами и f+1 столбцами контр. точек имеет следующее уравнение
Для него нужны два набора параметров для интерполяции и аппроксимации поверхности. Допустим, у нас есть m+1 ряда и n+1 столбца исходных точек dij, где 0 <= i <= m и 0 <= j <= n. Таким образом, нужны m+1 параметров s0, ..., sm в направлении u (т.e. по одному на каждый ряд исходных точек) и n+1 параметров t0, ..., tn в направлении v (т.e. по одному на каждый столбец исходных точек), чтобы точка (sc,td) на области определения поверхности соответствовала точке S(sc,td) на поверхности, которая, в свою очередь, соответствовала исходной точке dcd. Представляя это в виде уравнения, точка на поверхности в (sc,td), как показано ниже
,
соответствует исходной точке dcd, где sc и td - это параметры в направлениях u и v, соответственно.
В уравнении желаемой поверхности B-spline направление u соответствует индексу i в Ni,p(u) и pij. Так как i пробегает от 0 до m, то N0,p(u), N1,p(u), ..., Nm,p(u) - это коэффициенты столбцов контр. точек. Таким образом, в направлении u, нам нужно m+1 параметров, и с помощью метода вычисления параметров, использующего степень p и исходные точки из столбца j, мы можем вычислить m+1 параметров u0,j, u1,j, ..., um,j. Это показано на рисунке ниже. Желаемые параметры s0, s1, ..., sm просто являются средними значениями каждого ряда. Говоря точнее, параметр si - это среднее из параметров ряда i, si = (ui,0 + ui,1 + ... + ui,n)/(n+1).
Аналогично вычисление параметров в направлении v. В каждом ряду n+1 исходных точек, поэтому нужно n+1 параметров. Таким образом, для исходных точек ряда i, мы можем вычислить n+1 значений параметров vi,0, vi,1, ..., vi,n. Так как всего m+1 рядов, то эти значения можно сгруппировать в матрицу (m+1)×(n+1), и тогда параметр tj - это просто среднее из параметров столбца j, tj = (v0,j + v1,j + ... + vm,j)/(m+1). Таким образом, мы получаем n+1 параметров в направлении v.
Эта процедура выглядит следующим образом:
Вход: (m+1)×(n+1) исходных точек di,j; Выход: Параметры в направлении u s0, ..., sm и параметры в направлении v t0, ..., tn; Алгоритм: /* вычисляем s0, ..., sm */ for j := 0 to n do /* столбец j */ Находим набор из m+1 параметров u0,j, u1,j, ..., um,j; for i := 0 to m do si = (ui,0 + ui,1 + ... + ui,n)/(n+1); /* параметры для направления u найдены */ /* вычисляем t0, ..., tn */ for i := 0 to m do /* ряд i */ Находим набор из n+1 параметров vi,0, vi,1, ..., vi,n; for j := 0 to n do tj = (v0,j + v1,j + ... + vn,j)/(m+1); /* параметры для направления v найдены */ |
Затем, значения параметров s0, s1, ..., sm и степень p вместе определяют узловой вектор U в направлении u. Аналогично, параметры t0, t1, ..., tn и степень q вместе определяют узловой вектор V в направлении v. Нажмите тут, чтобы посмотреть способ вычисления узлового вектора из набора параметров.
Заметьте, что вышеизложенный алгоритм только показывает принцип вычислений и является неэффективным. Так как теперь вы знаете, что делать, то переделать алгоритм, чтобы он был более эффективным, не составит для вас особого труда. Заметьте, этот алгоритм работает только для методов равномерного распределения, длины хорды и центростремительного метода. Для универсального метода, из-за того, что исходные точки не участвуют в вычислении, мы можем применить равномерные узлы к одному ряду и одному столбцу исходных точек для вычисления параметров.