Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Рекурсивное Представление

Читайте также:
  1. A.4 Графическое представление понятий
  2. А. 4 Графическое представление понятий
  3. А.З Связи между понятиями и их графическое представление
  4. Глава 1. Реалистичное представление о диктатуре
  5. Глава 5 Евроцентризм и новое представление о собственности для России
  6. Глава 9. Представление 1 страница
  7. Глава 9. Представление 2 страница

Вышеизложенные вычисления можно провести и по-другому, с помощью рекурсии. Пусть P 0, j будет P j для j = 0, 1,..., n. То есть, P 0, j - это j -й элемент в 0 столбце. Элемент j в столбце i находим так:

Говоря точнее, элемент P i , j - это сумма (1- u) P i -1, j (сверху слева) и u P i -1, j +1 (снизу слева). Конечный результат (т.e. точка на кривой) - это P n ,0. Исходя из этого, можно сразу составить такую рекурсивную процедуру:

Function deCasteljau(i,j) begin

if i = 0 then

return P 0, j

Else

return (1- u)* deCasteljau (i -1, j) + u * deCasteljau (i -1, j +1)

End

Выглядит она простой и короткой; тем не менее, она очень неэффективна. И вот почему.

Блин, не хочу я вам[SSN], объяснять, почему она неэффективна. - (прим. перев.)

We start with a call to deCasteljau (n,0) for computing P n ,0. The else part splits this call into two more calls, deCasteljau (n -1,0) for computing P n -1,0 and deCasteljau (n -1,1) for computing P n -1,1.

Consider the call to deCasteljau (n -1,0). It splits into two more calls, deCasteljau (n -2,0) for computing P n -2,0 and deCasteljau (n -2,1) for computing P n -2,1. The call to deCasteljau (n -1,1) splits into two calls, deCasteljau (n -2,1) for computing P n -2,1 and deCasteljau (n -2,2) for computing P n -2,2. Thus, deCasteljau (n -2,1) is called twice. If we keep expanding these function calls, we should discover that almost all function calls for computing P i , j are repeated, not once but many many times. How bad is this? In fact, the above computation scheme is very similar to the following way of computing the n -th Fibonacci number:

Тут процедура сравнивается с процедурой вычисления чисел Фибоначи - прим. перев.:

Function Fibonacci(n) begin

if n = 0 or n = 1 then

return 1

Else

return Fibonacci (n -1) + Fibonacci (n -2)

End

Чтобы найти касательный и нормальный вектора в точке на кривой Безье, нам нужно знать ее производную в этой точке. К счастью, это просто, как два бита переслать.

Кривая Безье, построенная по n + 1 контрольным точкам p 0, p 1,..., p n имеет следующее уравнение:

где коэффициент Безье Bn,i (u) рассчитывается по формуле:

Так как контрольные точки постоянны и не зависят от переменной u, вычисление p '(u) сводится к вычислению производных коэффициентов Безье. После алгебраических преобразований имеем такой результат для B ' n,i (u):

Затем, вычисляя производную кривой p (u), получим:

Пусть q 0 = n (p 1 - p 0), q 1 = n (p 2 - p 1), q 2 = n (p 3 - p 2),..., q n -1 = n (p n - p n -1). Вышеизложенное уравнение уменьшается до

Таким образом, производная p (u) - это кривая Безье n - 1 пстепени, построенная по n контрольным точкам n (p 1 - p 0), n (p 2 - p 1), n (p 3 - p 2),..., n (p n - p n -1). Эта производная кривая обычно называется годографом исходной кривой Безье. Заметьте, что p i +1 - p i - это вектор от p i до p i +1 и n (p i +1 - p i) в n раз длиннее этого вектора. Имея в наличии контрольные точки кривой, можно легко получить контрольные точки ее производной. Рисунок слева показывает кривую Безье 7 степени, а справа - ее производную, т.е. кривую Безье 6 степени.


Дата добавления: 2015-10-29; просмотров: 153 | Нарушение авторских прав


Читайте в этой же книге: Касательный Вектор и Касательная | Нормальный Вектор и Кривизна | Почему Направляющая Тройка Важна? | Проблемы с Параметрическим Представлением | Параметризация По Длине Дуги | Рациональные Кривые | Рациональные Формы Стандартных Кривых | Построение Кривых Безье | Перемещение Контрольных Точек | Соотношение Между Производной и Алгоритмом de Casteljau |
<== предыдущая страница | следующая страница ==>
Нахождение точки на Кривой Безье: Алгоритм De Casteljau's| Объединение Двух Кривых Безье с соблюдением C1-Непрерывности

mybiblioteka.su - 2015-2024 год. (0.013 сек.)