- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Поверхности [Tensor] Произведения: Возвращаемся к теме
Теперь мы готовы показать вам истинное значение [tensor] произведения. Давайте вернемся к вышеуказанному уравнению. Если образовать из контр. точек матрицу из m+1 строк и n+1 столбцов
а из базисных функций кривой Безье в направлении v матрицу-столбец с n+1 строками:
то результат в скобках можно переписать в виде матричного произведения:
В этой матричной форме результат - это матрица-столбец с m+1 ячейками. Если, далее, привести базисные функции кривой Безье в направлении u к виду матрицы-строки с m+1 ячейками:
уравнение кривой Безье станет произведением трех матриц:
Таким образом, мы успешно преобразовали уравнение поверхности Безье к форме в виде произведения. Так как элементы матрицы контр. точек - это тоже матрицы (т.к. каждая точка может быть представлена как вектор, а значит, как матрица), это называется в математике формой [tensor] произведения. В итоге поверхности Безье - это поверхности [tensor] произведения.
Поверхности Безье: Алгоритм de Casteljau
Алгоритм de Casteljau можно расширить и для случая поверхностей. Говоря точнее, можно применить алгоритм de Casteljau несколько раз для того, чтобы найти соответствующую точку на поверхности Безье p(u,v) для данного (u,v). Эта страница описывает это расширение алгоритма, основываясь на понятии изопараметрических кривых, рассмотренном на предыдущей странице.
Вспомним, что уравнение поверхности Безье
можно переписать в следующем виде
Для i = 0, 1, ..., m, определим qi(v) следующим образом:
Для фиксированного v, имеем m+1 точек q0(v), q1(v), ..., qm(v). Каждое qi(v) - это точка на кривой Безье, определяемой контр. точками pi0, pi1, ..., pin. Подставляя эти значения обратно в уравнение поверхности, получим
Это значит, что p(u,v) - это точка кривой Безье, определяемая m+1 контр. точками q0(v), q1(v), ..., qm(v). Таким образом, приходим к следующему выводу:
Чтобы найти точку p(u,v) на поверхности Безье, мы можем найти m+1 точек q0(v), q1(v), ..., qm(v) и затем из этих точек получить p(u,v).
Этот вывод дает нам простой способ вычисления p(u,v) для данных (u,v). И вот почему. Так как каждое qi(v) - это точка на кривой Безье, определяемой i-м рядом контр. точек: pi0, pi1, ..., pin. Таким образом, для i-го ряда и данного v, мы можем применить алгоритм de Casteljau для кривой Безье, чтобы вычислить qi(v). После m+1 применений алгоритма de Casteljau (т.e. по разу на каждый ряд), мы получим q0(v), q1(v), ..., qm(v). Затем, снова применяя алгоритм de Casteljau к этим m+1 контр. точкам для u, получим итоговую точку p(u,v) на поверхности!
Следующая схема иллюстрирует это понятие. Данная поверхность - это поверхность Безье степени (2,2), определяемая контрольной сеткой 3x3. Пусть u = 2/3, а v = 1/3. Чтобы определить q0(1/3), берем 0-й ряд контр. точек p00, p01 и p02 и применяем алгоритм de Casteljau к этой кривой Безье для v = 1/3. Повторяем это с первым и вторым рядом для v = 1/3. Отсюда получим три промежуточные точки q0(1/3), q1(1/3) и q2(1/3). Наконец, применяем алгоритм de Casteljau к этим трем новым точкам при u = 2/3. Результат - точка p(2/3,1/3), показана на рисунке желтым.
Далее показан пример нахождения точки с изображенной поверхностью Безье. Контр. точки показаны белым. В этой контрольной сетке четыре ряда и пять столбцов и поэтому степень поверхности - (3,4). Для каждого ряда, промежуточные ломаные, используемые в алгоритме de Casteljau, показаны красным. Четыре промежуточных контр. точки q0, q1, q2 и q3 также показаны на рисунке. Промежуточные ломаные для этого применения алгоритма de Casteljau показаны синим, а конечная точка p(u,v) на поверхности показана темной сферой.
В итоге, алгоритм сводится к следующему:
Вход: a m+1 рядов и n+1 столбцов контр. точек и (u,v). Выход: точка на поверхности p(u,v) Алгоритм:
for i := 0 to m do
begin
Применяем алгоритм de Casteljau к i-му ряду контр. точек по v; Пусть полученная точка будет qi(v);
end
Применяем алгоритм de Casteljau к q0(v), q1(v), ..., qm(v) по u; Полученная точка -это p(u,v);