
- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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, аппроксимирующуюся к (m+1)×(n+1) исходным точкам. Из-за того, что аппроксимирующая поверхность не содержит все исходные точки, то, как и в случае с аппроксимацией кривых, у нас есть контроль над степенью и количеством контр. точек. Таким образом, в добавок к исходным точкам, входными данными являются также степени p и q в направлениях u и v, и количество рядов e+1 и столбцов f+1 контр. точек. Как в случае с кривыми, входные значения должны удовлетворять условию m > e >= p >= 1 и n > f >= q >= 1, чтобы было возможно найти решение. С этой информацией, искомая поверхность B-spline степени (p,q), определенная по (e+1)×(f+1) неизвестным контр. точкам pij имеет следующий вид:
Так как имеется m+1 рядов исходных точек, то нам нужно m+1 параметров в направлении u, s0, s0, ..., sm. Аналогично, нужно n+1 параметров в направлени v, t0, t0, ..., tn. Вычисление этих параметров обсуждалось в Параметрах и Узловых Векторах для Поверхностей. При наличии этих параметров, точка на поверхности, соответствующая исходной точке dcd, вычисляется следующим образом:
Квадрат расстояния погрешности между dcd и соотв. ей точке на поверхности равен
Сумма всех квадратов расстояний погрешности равна:
Это функция [in] (e+1)×(f+1) неизвестных контр. точек pij. Как мы уже делали в случае с глобальной аппроксимацией кривых, чтобы найти минимум f(), вычислим ее частныке производные и приравняем их к нулю:
Теперь у нас есть (e+1)×(f+1) уравнений, нули которых соответствуют искомым контр. точкам. К сожалению, эти уравнения нелинейные, а решение системы нелинейных уравнений - это очень трудоемкий процесс. Вместо поиска оптимального решения можно просто найти достаточно хорошее решение без нахождения минимума функции f(). [Rather than aiming for an optimal solution, we can easily find a reasonably good solution that does not minimize function f().]
Поиск Решения
Чтобы найти не-оптимальное решение, применим технику, использованную в Глобальной Интерполяции Поверхностей. Говоря точнее, применим аппроксимацию кривой к каждому столбцу исходных точек, чтобы найти некоторые "промежуточные" исходные точки. Таким образом, для каждого столбца из m+1 исходных точек мы получим e+1 "промежуточных" исходных точек. Так как есть n+1 столбцов, то эти "промежуточные" исходные точки образуют сетку (e+1)×(n+1). Далее, применяем аппроксимацию кривой к каждому ряду этих промежуточных исходных точек, чтобы получить искомые контр. точки. Так как в каждом ряду n+1 "промежуточных" исходных точек, всего есть e+1 рядов, каждая аппроксимация ряда дает f+1 искомых контр. точек, и, в результате, получим (e+1)×(f+1) контр. точек. Вотобобщение всего сказанного:
Вход: (m+1)×(n+1) исходных точек dij, степень (p,q), и и желаемые e+1 рядов f+1 столбцов контр. точек; Выход: Поверхность B-spline степени (p,q), аппроксимирующая эти исходные точки (т.е. приближающаяся к ним - прим. перев.); Алгоритм: Вычисляем параметры в направлении u s0, s1, ..., sm и узловой вектор U; Вычисляем параметры в направлении v t0, t1, ..., tn и узловой вектор V; for d := 0 to n do /* для столбца d из d */ begin /* вычисляем "промежуточные исходные точки" q */ Применяем аппроксимацию криивой к столбцу d исходных точек (т.e. d0d, d1d, ... dmd), используя
Результат - это столбец d из "промежуточных исходных точек" q0d, q1d, ..., qed /* q образуют матрицу (e+1)×(n+1) */ end for c := 0 to e do /* для ряда c из q */ begin /* вычисляем искомые контр. точки p */ Применяем аппроксимацию кривой к ряду c из q (т.e. qc0, qc1, ... qcn), используя
Результат - это ряд c искомых контр. точек pc0, pc1, ..., pcf /* p образуют матрицу (e+1)×(f+1) */ end Найденные (e+1)×(f+1) контр. точек pij, степень (p,q), и узловые векторы U и V определяют аппроксимирующую кривую B-spline степени (p,q) для данных исходных точек. |
В этом алгоритме к столбцам d применяется n+1 аппроксимаций кривой, а затем к "промежуточным" исходным точкам еще e+1 аппроксимаций. Таким образом, всего n+e+2 аппроксимаций. С другой стороны, можно применить m+1 аппроксимаций кривой к каждому ряду исходных точек, чтобы получить (m+1)×(f+1) "промежуточных" исходных точек. Затем применить f+1 аппроксимаций к каждому столбцу этих "промежуточных" исходных точек, чтобы получить (e+1)×(f+1) искомых контр. точек. В этом случае всего применяется m+f+2 аппроксимаций кривой.
Заметьте, в этом алгоритме не находится минимум функции f(), и поэтому он не является оптимальным, хоть и подходит для многих приложений.