- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Глобальная Интерполяция Поверхностей
Путсь у нас есть m+1 рядов и n+1 столбцов исходных точек dij (0 <= i <= m и 0 <= j <= n) и нужно найти поверхность B-spline степени (p,q), содержащую все из них. Аналогично случаю кривых, имеем исходные точки и степени p и q в качетстве исходных данных. Чтобы определить кривую B-spline, нам нужно два узловых вектора U и V, по одному на каждое направление, и набор контр. точек. Как и в случае с кривыми, количества контрольных и исходных точек равны (т.e. (m+1)×(n+1) контр. точек в m+1 рядах и n+1 столбцах). С помощью метода, обсуждавшегося в Параметрах и Узловых Векторах для Поверхностей, мы можем вычислить два набора параметров: sc (0 <= c <= m) в направлении u и td (0 <= d <= n) в направлении v, устанавливая e и f в m и n, соответственно. Мы также получим узловые векторы U и V соответственно для направлений u и v. Таким образом, все, что остается сделать - это найти нужные контр. точки!
Поиск Решения
Теперь нам нужно найти интерполированную поверхность B-spline степени (p,q). Так как у нас есть узловые векторы, параметры, степени и исходные точки, то единственная недостающая часть - это (m+1)×(n+1) контр. точек.
Пусть дана такая поверхность B-spline:
Так как она содержит все исходные точки и так как параметры sc и td соответствуют исходной точке dcd, то, подставив u=sc и v=td в уравнение поверхности, получим:
Так как Ni,p(sc) не зависит от индекса j, то можно вынести этот член из суммирования по j:
Если рассмотреть внутреннее выражение, то видно, что индекс i есть только в pij. Таким образом, можно взять для удобства новое обозначение:
Говоря точнее, если i фиксирована в одном и том же значении, то qid - это точка, вычисленная для td, на кривой B-spline степени q, определенной по n+1 "неизвестным" контр. точкам i-го ряда из p (т.e. pi0, pi1, ..., pin). Подставляя qid в вышеуказанное уравнение dcd, получим
Таким образом, исходная точка dcd - это точка, вычисленная для sc, кривой B-spline степени p, определенной по m+1 "неизвестным" контр. точкам столбца d из q (т.e., q0d, q0d, ..., qmd). Повторяя это для каждого c (0 <= c <= m), получим d-й столбец исходных точек (т.e. d0d, d1d, ..., dmd) из d-го столбца q (т.e. q0d, q1d, ..., qmd) и параметров s0, s1, ..., sm. Так как исходные точки d0d, d1d, ..., dmd, степень p и параметры s0, s1, ..., sm известны, то это уравнение обозначает
Найти d-й столбец контр. точек q0d, q1d, ..., qmd по данным: степени p, параметрам s0, s1, ..., sm и d-му столбцу исходных точек. |
Получается, это задача интерполяции кривой! То есть, можно применить глобальную интерполяцию кривой к каждому столбцу исходных точек, чтобы получить столбцы контр. точек qcd. Так как имеется n+1 столбцов исходных точек, то получим n+1 столбцов q.
Теперь, мы можем использовать ту же самую идею, но применять ее к уравнению qid, которое показано еще раз ниже. В этом уравнении, исходные точки ряда i из q (т.e. qi0, qi1, ..., qin)- это точки на кривой B-spline, вычисленные для t0, t1, ..., tn, степени q, определенной по n+1 неизвестным контр. точкам pi0, pi1, ..., pin. Таким образом, применяя интерполяцию кривой со степенью q и параметрами t0, t1, ..., tn к ряду i из q, получим i ряд искомых контр. точек!
Когда найдем все ряды контр. точек, то эти контр. точки, вместе с двумя узловыми векторами и степенями p и q, определят интерполированную поверхность B-spline степени (p,q) для данных исходных точек. Таким образом, интерполяция поверхности B-spline состоит из (m+1) + (n+1) интерполяций кривой! Вот обобщение всех необходимых шагов:
Вход: (m+1)×(n+1) исходных точек dij и степень (p,q); Выход: Поверхность B-spline степени (p,q), содержащая все исходные точки; Алгоритм: Вычисляем параметры в направлении u s0, s1, ..., sm и узловой вектор U; Вычисляем параметры в направлении v t0, t1, ..., tn и узловой вектор V; for d := 0 to n do /* для столбца d */ begin /* вычисляем "промежуточные исходные точки" q */ Применяем интерполяцию кривой к столбцу d исходных точек (т.e. d0d, d1d, ... dmd), используя
Результат - столбец d "промежуточных исходных точек" q0d, q1d, ..., qmd end for c := 0 to m do /* для ряда c */ begin /* вычисляем искомые контр. точки p */ Применяем интерполяцию кривой к ряду c из q (т.e., qc0, qc1, ... qcn), используя
Результат - ряд c искомых контр. точек pc0, pc1, ..., pcn end Найденные (m+1)×(n+1) контр. точек pij, степень (p,q) и узловые векторы U и V определяют интерполированную поверхность B-spline степени (p,q) для данных исходных точек. |