- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Параметризация По Длине Дуги
Так как разные параметрические виды одной и той же кривой могут давать разные результаты, вы, конечно, захотите спросить: какого фига? Точнее, вы спросите: есть ли такая параметризация, которой можно доверять всегда? Я отвечу: да, есть. Математики уже это давным-давно решили и пошли пить пиво. Они придумали использовать длину дуги в качестве параметра.
Пусть отрзок прямой имеет длину s. Можно параметризовать эту кривую так, что f(u) будет обозначать точку, имеющую расстояние u от начальной f(0), где u между 0 и s. С такой параметризацией с помощью длины дуги, когда u изменяется от 0 до s, f(u) движется по кривой от f(0) до f(s) с постоянной скоростью. Таким образом, касательный вектор, показатель скорости, является единичным. И не только это, много формул упрощается.
Почему бы тогда не использовать параметризацию по длине дуги везде подряд? Ответ прост. В теории эта параметризация проста и красива, но когда дело доходит до расчетов, становится тяжко. Находить длину дуги иногда очень трудно, потому что часто в таких случаях в функции используются квадратные корни и т.д.
Так что ну ее нафиг, эту параметризацию по длине дуги. Не будем ее юзать, и так проживем.
Геометрическая Непрерывность
Многие из C1 непрерывных кривых непрерывны по кривизне, но не C2 в точке перехода, а некоторые из них даже и не дифференцируемы дважды. Они выглядят гладко в точке перехода, а также при переходе от одного отрезка к другому. Более того, как упоминалось ранее, после замены переменных, некоторые из них могут стать C2 в точке перехода. Но такую параметризацию еще фиг найдешь. Так что мы сделаем отступление, изменим формулировку C2:
Два отрезка кривых называются Gk геометрически непрерывными в точке перехода тогда и только тогда, когда все i-ые производные, i <= k, вычисляемые с помощью параметризации по длине дуги, равны в точке перехода.
Блин, опять эта длина дуги. Да ладно, не обращай внимания, прилежный читатель 8-], все будет ОК. Вот тебе нормальное определение:
Два отрезка кривых называются Gk геометрически непрерывными тогда и только тогда, когда существует две параметризации, по одной на отрезок, причем такие, что все i-ые производные, i <= k, вычисляемые с помощью этих параметризаций, равны в точке перехода.
Хорошо конечно, но все равно как-то хреново. Как эти параметризации-то искать? К счастью, случаи k = 1 и k = 2 очень просты. Начнем с случая k=1.
Два C0 отрезка кривых называются G1 геометрически непрерывными в точке перехода тогда и только тогда, когда векторы f'(u) и g'(v) направлены в одну сторону в точке перехода. Заметьте, f'(u) и g'(v) вычисляются в точке перехода.
Так как касательные векторы в точке перехода направлены в одну сторону, кривые имеют общую касательную. Тем не менее, обратное не верно. Точнее, то, что два отрезка кривых имеют общую касательную, еще не значит, что они G1-непрерывны в точке перехода. На следующем рисунке, кривые f(u) и g(v) имеют общую точку, в которой у них общая касательная. Тем не менее, касательные векторы направлены в разные стороны, и в итоге отрезки не G1 в точке перехода. По такому определению, все кривые из примеров - G1 в точках перехода.
G. Neilson нашел очень простую формулу для непрерывности G2 :
Два C1 отрезка кривых называются G2 геометрически непрерывными в точке перехода тогда и только тогда, когда вектор f''(u) - g''(v) параллелен касательному в точке перехода. Заметьте, f''(u) и g''(v) вычисляются в точке перехода.
Красота этой формулировки в том, что не важно, какую параметризацию вибирать. Но перед этим надо проверить на непрерывность C1.
Вот пример, иллюстрирующий это. Возьмем следующие отрезки парабол, сходящиеся в точке ( 0, 1, 0):
f(u) = ( -1 + u2, 2u - u2, 0 ) g(v) = ( 2u - u2, 1 - u2, 0 )
Оба отрезка имеют интервал [0, 1]. Точка перехода f(1) = g(0) = ( 0, 1, 0 ).
Вот вычисления:
f'(u) = ( 2u, 2 - 2u, 0 ) f''(u) = ( 2, -2, 0 ) f'(u) × f''(u) = ( 0, 0, -4 ) | f'(u) | = 2SQRT(1 - 2u + 2u2 ) | f'(u) × f''(u) | = 4 k(u) = 1/(2(1 - 2u + 2u2)1.5) g'(v) = ( 2 - 2v, -2v, 0 ) g''(v) = ( -2, -2, 0 ) g'(v) × g''(v) = ( 0, 0, -4 ) | g'(v) | = 2SQRT(1 - 2v + 2v2 ) | g'(v) × g''(v) | = 4 k(v) = 1/(2(1 - 2v + 2v2)1.5)
Из f'(1) = g'(0) = ( 2, 0, 0 ), получаем, что эти два отрезка C1 в точке перехода. Так как f''(1) = ( 2, -2, 0 ) не равно g''(0) = ( -2, -2, 0 ), они не C2. Но, так как функции их кривизны одинаковы, можно ожидать, что переход в точке соединения будет гладким.
Проверим на G2. Так как кривые C1, стоит проверить их на G2. Так как f''(1) - g''(0) = ( 4, 0, 0 ) параллелен касательному вектору ( 2, 0, 0 ) в точке перехода, эти отрезки G2 непрерывны в точке перехода ( 0, 1, 0 ).
По определению Gk, можно найти две параметризации, не обязательно по длине дуги, такие, что заново параметризованные отрезки будут C2.