- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Проблемы с Параметрическим Представлением
Ck непрерывность кажется удобным инструментом для проверки на гладкость соединения кривых. Но и тут есть проблема. Пусть даны следующие отрезки кривых:
f(u) = A + u(B - A) g(v) = B + v(C - B) ,
где A, B и C - три коллинеарные (лежащие на одной прямой) точки, как показано на рисунке.
Когда u (соотв., v) изменяется от 0 до 1, f(u) (соотв., g(v)) пробегает от A до B (соотв., от B до C). Отрезки f(u) и g(v), очевидно, C0 непрерывны в точке соединения B. А C1 непрерывны ли они?
f'(u) = B - A g'(v) = C - B
Таким образом, f'(u) = B - A в общем случае не равно g'(v) = C - B и, следовательно, два этих отрезка не C1 непрерывны в точке соединения B!
Странно? Это все из-за параметризации. Если заменить направляющие векторы B - A и C - B на единичные векторы и изменить интервалы параметров u и v, проблема пропадет. Таким образом, уравнения нужно изменить на следующие:
F(u) = A + u(B - A)/ | B - A | G(v) = B + v(C - B)/ | C - B | ,
где u в пределах от 0 до | B - A | , а v в пределах от 0 до | C - B |. Теперь, так как мы имеем F'(u) = G'(v) = единичному вектору в направлении от A до C, отрезки C1 непрерывны. То есть, параметризация отрезков кривых - хорошая вещь 8).
Вот еще один пример, здесь PI равно 3.1415926, u и v в границах [0,1].
f(u) = ( -cos(u2 PI/2), sin(u2 PI/2), 0 ) g(v) = ( sin(v2 PI/2), cos(v2 PI/2), 0 )
Когда u изменяется от 0 до 1, f(u) проходит левую часть полукруга. Аналогично с правой частью. Они соединяются в точке, показаной красным, (0,1,0) = f(1) = g(0). Имеем следующее:
f'(u) = ( PI u sin(u2 PI/2), PI u cos(u2 PI/2), 0 ) f''(u) = ( PI2 u2 cos(u2 PI/2), -PI2 u2 sin(u2 PI/2), 0 ) f'(u) × f''(u) = ( 0, 0, -PI3 u3 ) | f'(u) | = PI u | f'(u) × f''(u) | = PI3 u3 k(u) = 1 g'(v) = ( PI v cos(v2 PI/2), -PI v sin(v2 PI/2), 0 ) g''(v) = ( -PI2 v2 cos(v2 PI/2), -PI2 v2 cos(v2 PI/2), 0 ) g'(v) × g''(v) = ( 0, 0, -PI3 u3 ) | g'(v) | = PI v | g'(v) × g''(v) | = PI3 v3 k(v) = 1
Заметьте, что и g'(0), и g''(0) - вектора нулевой длины, и поэтому неопределены. В итоге мы вообще не можем ничего сказать о непрерывности; но по рисунку "кажется", что они непрерывны, хотя бы потому, что у них общая касательная в точке соединения.
Как вы уже, наверное, догадались, щас будем опять все это дело перепараметризовывать. ( Жуткое слово, согласен. - прим. перев.) Заменим u2 на p в f(u) и v2 на q в g(v). Получим такие уравнения:
f(p) = ( -cos(p PI/2), sin(p PI/2), 0 ) g(q) = ( sin(q PI/2), cos(q PI/2), 0)
Их производные:
f'(p) = ( (PI/2) sin(p PI/2), (PI/2) cos(p PI/2), 0 ) f''(p) = ( (PI/2)2 cos(p PI/2), -(PI/2)2 sin(p PI/2), 0 ) g'(q) = ( (PI/2) cos(q PI/2), -(PI/2) sin(q PI/2), 0 ) g''(q) = ( -(PI/2)2 sin(q PI/2), -(PI/2)2 cos(q PI/2), 0 ) f'(p) × f''(p) = g'(q) × g''(q) = ( 0, 0, -(PI/2)3 ) | f'(p) × f''(p) | = | g'(q) × g''(q) | = (PI/2)3 | f'(p) | = | g'(q) | = PI/2 k(p) = k(q) = 1
Следовательно, после замены переменных и f'(1) и g'(0) равны ( PI/2, 0, 0 ) и поэтому они являются C1 непрерывными. Более того, и f''(1) и g''(0) равны ( 0, -(PI/2)2, 0 ), и поэтому они C2 непрерывны! Они также непрерывны по кривизне, так как их кривизна везде равна 1 (это окружности). Вот она какая, эта перепараметризация. 8)