Читайте также:
|
|
Перепишем производную кривой Безье, разбив последний член p i +1- p i на два:
Таким образом, производная кривой Безье - это разность двух кривых Безье степени n -1. Для простоты, пусть эти кривые будут C 1(u) и C 2(u):
Из этих определений получаем, что первая кривая C 1(u) описывается контрольными точками p 1, p 2,..., p n, а вторая кривая C 2(u) описывается контрольными точками p 0, p 1,..., p n -1. Производная равна:
Таким образом, теоретически, для того, чтобы вычислить производную p (u) для отдельного u, можно использовать алгоритм de Casteljau, чтобы вычислить C 1(u) и C 2(u). Затем, вычислив их разность и умножив на n, получим p '(u).
Теперь надо использовать алгоритм de Casteljau. Посмотрите на рисунок ниже. В левом столбце находятся все данные контрольные точки. Точка n0 дает точку p (u) на кривой, а отрезок, соединяющий (n-1)0 и (n-1)1 - это последняя ломаная в алгоритме de Casteljau. Фактически, n0 лежит на отрезке от (n-1)0 до (n-1)1, причем отношение расстояний между (n-1)0 и n0, и между (n-1)0 и (n-1)1 равно u.
Так как кривая C 1(u) описывается контрольными точками 01, 02,..., 0n, то, используя диаграмму (выше), можно видеть, что (n-1)1 - это точка на кривой C 1(u). Соответственно, так как C 2(u) описывается контрольными точками 00, 01,..., 0(n-1), видно, что (n-1)0 - это точка на кривой C 2(u). Таким образом, вектор C 1(u)- C 2(u) - это вектор от точки (n-1)0 до точки (n-1)1, а производная p (u) равна C 1(u)- C 2(u), умноженному на n.
Что из этого следует? Так как ломаная от (n-1)0 до (n-1)1 в алгоритме de Casteljau имеет то же направление, что и касательный вектор в точке p (u), она касательна кривой в p (u)! В итоге получаем, что
Последняя кривая, т.е. отрезок, в алгоритме de Casteljau, касательна кривой Безье в точке p(u). |
Пример на следующем рисунке поясняет это. Показана точка, для которой u = 0.5. Видно, что последний отрезок в сети de Casteljau касателен кривой в p (0.5).
Производные Высших Порядков [Higher Derivatives]
Вычисление производных высших порядков кривых Безье - дело несложное. Вспомним, что производная p (u) - это
Применяя формулу производной к этой кривой Безье, получим следующее, т.е. вторую производную исходной кривой:
Найдя p '(u) и p ''(u), можно будет очень легко найти направляющую тройку веторов и кривизну в точке p (u). Производные высших порядков можно находить, рекурсивно применяя формулу производной.
Чтобы подробнее рассмотреть производные высших порядков, нужно ввести понятие конечной разности. Пусть конечная разность нулевого уровня D i 0 описывается контрольными точками P i для 0 <= i <= n. Затем, конечная разность первого уровня D i 1 - это разность между элементами предыдущего уровня, т.е. нулевого (D i 0):
Заметьте, что в разности первого уровня только n точек, на одну меньше, чем количество исходных контрольных точек. Еще точнее, первый уровень разности - это
Второй уровень разности описывается разностью точек первого уровня.
Второй уровень разности имеет n -1 точек. Повторяя эту процедуру, можно получить k -й уровень разности (см. ниже). В k -ом уровне разности n-k +1 точек.
С помощью такого обозначения можно описать производную довольно коротко. Прежде всего, перепишем p '(u) используя разности D i 1:
Вычисляя производную p '(u), чтобы получить p ''(u), получим формулу p ''(u) с участием D i 2:
Сделав то же самое с p ''(u), получим формулу p '''(u) через D i 3:
Продолжая в том же духе, можно получить k -ю производную p [ k ](u) через D i k:
Таким образом, чтобы вычислить k -ю производную p (u) для конкретного u, можно сначала вычислить разности D ik и применить алгоритм de Casteljau для нахождения точки, соответствующей u на кривой Безье, описываемой точками D ik. Говоря точнее, можно сгруппировать все D i 0 в нулевой столбец, назначить стрелкам знаки (вверх (красные) +, вниз (синие) -) для вычисления столбца 1 разностей D i 1. Повторяем эту операцию до тех пор, пока не дойдем до столбца k, как показано ниже:
В конце концов, применив алгоритм de Casteljau к точкам столбца k при данном u, получим вектор p [ k ](u)!
Дата добавления: 2015-10-29; просмотров: 150 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Объединение Двух Кривых Безье с соблюдением C1-Непрерывности | | | Разбиение Кривой Безье |