- •Параметрические Кривые: Обзор
- •Примеры
- •Касательный Вектор и Касательная
- •Примеры
- •Нормальный Вектор и Кривизна
- •Кривизна
- •Еще примеры
- •Почему Направляющая Тройка Важна?
- •Вопросы Непрерывности
- •Проблемы с Параметрическим Представлением
- •Параметризация По Длине Дуги
- •Геометрическая Непрерывность
- •Рациональные Кривые
- •Рациональные Формы Стандартных Кривых
- •Теоремы Объединения [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]
- •Метод Длины Хорды
- •Центростремительный Метод
- •Получение Узлового Вектора
- •Универсальный Метод
- •Параметры и Узловые Векторы для Поверхностей
- •Глобальная Интерполяция Кривых
- •Нахождение Решения
- •Алгоритм
- •Влияние Параметров и Узлов
- •Влияние Степени
- •Почему Этот метод Назывется Глобальным?
- •Глобальная Аппроксимация Кривых
- •Значение Наименьшей Площади
- •Поиск Решения
- •Алгоритм
- •Влияние Степени и Количества Контрольных Точек
- •Почему Этот Метод Глобальный?
- •Глобальная Интерполяция Поверхностей
- •Поиск Решения
- •Почему Этот Метод Глобальный?
- •Глобальная Аппроксимация Поверхностей
- •Поиск Решения
- •Усовершенствование Алгоритма
- •Простое Сравнение
Метод Длины Хорды
Если интерполированная кривая довольно точно следует исходной ломаной, то длина отрезка кривой между двумя смежными точками будет очень близка к длине хорды между двумя этими точками, а длина интерполтрованной кривой будет очень близка к длине исходной ломаной. На рисунке ниже, каждый отрезок кривой интерполируемой ломаной очень близок к соответствующей ему хорде, а длина кривой близка к длине исходной ломаной. Таким образом, если поделить область, следуя распределению по длинам хорд, то параметры будут аппроксимацией (приближением) параметризации по длине дуги. Это суть метода длины хорды, или хордового метода.
Пусть исходные точки равны d0, d1, ..., dn. Расстояние между di-1 и di равно |di-di-1|, а длина исходной ломаной равна сумме длин этих хорд:
Отсюда, показатель длины хорды от исходной точки d0 до исходной точки dk, обозначается Lk, по отношению к длине исходной ломаной, равен
Отсюда, если мы выбрали параметризацию по длине дуги для интерполированной кривой, то область нужно разбить в отношении Lk. Говоря точнее, если область - это [0,1], то параметр tk должен быть равен значению Lk:
,
где L - это длина исходной ломаной. В этом случае параметры делят область в отношениях длин хорд.
Взгляните на пример. Путсь у нас есть четыре исходные точки (n = 3): d0 = < 0,0 >, d1 = < 1,2 >, d2 = < 3,4 > и d3 = < 4,0 >. Длина каждой хорды равна
,
а полная длина равна
В итоге получим соответствующие параметры:
Следующие рисунки показывают исходные точки и распределения параметров по методам равномерного распределения и длины хорды.
Что, если область [a,b], а не [0,1]? Заметьте, что Lk - это число между 0 и 1. Так как длина [a, b] равна b-a, Lk(b-a), 0 <= k <= n, то делим [0,b-a] в том же отношении, что и [0,1]. Таким образом, следующие параметры делят [a,b] в соответствии с длинами хорд:
Метод длины хорды широко используется и обычно хорошо работает. Так как известно, что кривые в виде многочлена не могут быть параметризованы до единичной скорости [to have unit speed] , поэтому метод длины хорды может быть только приближением. Иногда из-за большой длины хорды может получится слишком большая выпуклость. На рисунке ниже показаны черная и синяя кривые, интерполирующие 7 исходных точек. Как видите, обе кривые имеют схожую форму, кроме последнего отрезка и еще одного, немного "виляющего", вычисленного по методу длины хорды. Последние отрезки кривых очень отличаются и кривая по методу длины хорды имеет бóльшую выпуклость и отклоняется от кривой, полученной по методу равномерного распределения. Это известная проблема метода длины хорды.
Центростремительный Метод
E. T. Y. Lee предложил этот центростремительный метод. Допустим, мы ведем машину по извилистому спуску. Приходится быть очень аккуратными на крутых поворотах, чтобы ускорение по нормали (т.e. центробежная сила) не должно быть слишком большим. Иначе машина может потерять управление. Чтобы ехать безопасно, Lee предположил, что нормальная сила должна быть пропорциональна изменению угла. Центростремительный метод - это аппроксимация этой модели. Фактически, можно сказать, что центростремительный метод - это расширение метода длины хорды.
Пусть исходные точки равны d0, d1, ..., dn. Во-первых, нужно выбрать положительное значение "силы" a. Обычно a = 1/2 для извлечения квадратного корня. Затем, расстояние между двумя смежными точками вычисляется как |dk - dk-1|a , а не так, как обычно: |dk - dk-1|. Длина исходной ломаной по таким вычислениям равна
Отношение расстояний от d0 до dk исходной ломаной по отношению к полной длине равно
Таким образом, L0 = 0, L1, ..., Ln = 1 делят [0,1] в соответствии с длиной исходной ломаной по новым вычислениям. Отсюда, параметры равны
Если a = 1, то центростремительный метод становится методом длины хорды и, следовательно, первый является расширением последнего. Если a < 1, скажем, a = 1/2 (т.e. квадратный корень), |dk - dk-1|a меньше, чем |dk - dk-1|. Следовательно, влияние более длинной хорды (т.e. длина > 1) на длину исходной ломаной уменьшается, а влияние более короткой (т.e. длина < 1) - увеличивается. Из-за этой характеристики Lee решил, что центростремительный метод лучше подходит для прохождения крутых поворотов, чем метод длины хорды.
Давайте повторим пример, обсужденный в методе длины хорды. Имеем четыре исходные точки (n = 3): d0 = < 0,0 >, d1 = < 1,2 >, d2 = < 3,4 > и d3 = < 4,0 >. Возьмем a = 1/2 и длина каждой хорды по таким вычислениям будет
Полная длина равна
Таким образом, параметры равны
Далее идет распределения трех наборов параметров, вычисленных по методам равномерного распределения, длины хорды и центростремительному.
Взглянем на еще один пример. Далее показаны четыре исходных точки, интерполированные в три кривых B-spline по методу равномерного распределения (черный цвет), длины хорды (синий), и центростремительному (красный). Как видите, в методе равномерного распределения получается острый пик, а в методе длины хорды получается две больших выпуклости и две очень близких смежных точки хорошо интерполируются.
Можно ли сказать, что центростремительный метод лучше двух других? Следующий пример показывает, что не всегда. Имеем 7 исходных точек и черную, синюю и красную кривую, полученные соответственно по методам равномерного распределния, длины хорды и центростремительному методу. В данном случае метод равномерного распределения дает очень близкую интерполяцию. Центростремительный метод немного отстает от хорошего результата, который дает метод равномерного распределения. Ну а метод длины хорды вообще слишком выдается наружу.