Алгоритм де Кастельжо: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 32: Строка 32:
Обратите внимание, что полученные в процессе промежуточные точки являются контрольными точками для двух новых кривых Безье, в точности совпадающих с исходной и в сумме дающих исходную кривую Безье. Этот алгоритм не только определяет точку кривой в <math>\scriptstyle t</math>, но и делит кривую на две части в <math>\scriptstyle t</math>, а также предоставляет описание двух суб-кривых в форме Безье.
Обратите внимание, что полученные в процессе промежуточные точки являются контрольными точками для двух новых кривых Безье, в точности совпадающих с исходной и в сумме дающих исходную кривую Безье. Этот алгоритм не только определяет точку кривой в <math>\scriptstyle t</math>, но и делит кривую на две части в <math>\scriptstyle t</math>, а также предоставляет описание двух суб-кривых в форме Безье.


Описанный алоритм справедлив для нерациональных кривых Безье. Для вычисления рациональных кривых в <math>\scriptstyle \mathbf{R}^n</math>, можно спроецировать точку в <math>\scriptstyle \mathbf{R}^{n+1}</math>; например кривая в трехмерном пространстве должна иметь опорные точки <math>\scriptstyle \{(x_i, y_i, z_i)\}</math> и веса <math>\scriptstyle \{w_i\}</math> спроецированные в весовые контрольные точки <math>\scriptstyle \{(w_ix_i, w_iy_i, w_iz_i, w_i)\}</math>. Затем обычно алгоритм переходит к [[Интерполяция|интерполяции]] в <math>\scriptstyle \mathbf{R}^4</math>.


The interpretation given above is valid for a nonrational Bezier curve. To evaluate a rational Bezier curve in <math>\scriptstyle \mathbf{R}^n</math>, we may project the point into <math>\scriptstyle \mathbf{R}^{n+1}</math>; for example, a curve in three dimensions may have its control points <math>\scriptstyle \{(x_i, y_i, z_i)\}</math> and weights <math>\scriptstyle \{w_i\}</math> projected to the weighted control points <math>\scriptstyle \{(w_ix_i, w_iy_i, w_iz_i, w_i)\}</math>. The algorithm then proceeds as usual, interpolating in <math>\scriptstyle \mathbf{R}^4</math>. The resulting four-dimensional points may be projected back into three-space with a [[perspective divide]].
The interpretation given above is valid for a nonrational Bezier curve. To evaluate a rational Bezier curve in <math>\scriptstyle \mathbf{R}^n</math>, we may project the point into <math>\scriptstyle \mathbf{R}^{n+1}</math>; for example, a curve in three dimensions may have its control points <math>\scriptstyle \{(x_i, y_i, z_i)\}</math> and weights <math>\scriptstyle \{w_i\}</math> projected to the weighted control points <math>\scriptstyle \{(w_ix_i, w_iy_i, w_iz_i, w_i)\}</math>. The algorithm then proceeds as usual, interpolating in <math>\scriptstyle \mathbf{R}^4</math>. The resulting four-dimensional points may be projected back into three-space with a [[perspective divide]].

Версия от 13:31, 30 мая 2010

В вычислительной математике алгоритм де Кастельжо, названный в честь его изобретателя Поля де Кастельжо — рекурсивный метод определения формы многочленов Бернштейна или кривых Безье. Алгоритм де Кастельжо также может быть использован для разделения кривой Безье на две части по произвольному значению параметра .

Достоинством алгоритма является его более высокая вычислительная устойчивость по сравнению с прямым методом.

Описание

Дан многочлен B в форме Бернштейна степени n

где b — базис многочлена Бернштейна, многочлен в точке t0 может быть определен с помощью рекуррентной последовательности

Тогда определение в точке может быть определено в шагов алгоритма. Результат дан по:

Geometric interpretation

Геометрическая интерпретация алгоритма де Кастельжо прямая:

  • Относительно кривой Безье с контрольными точками . Соединем последовательность контрольных точек с первой по последнюю, создавая ломаную линию.
  • Разделяем каждую полученную сторону этой ломаной в соотношении и соединяем полученные точки. В результате получаем ломаную линию с количеством отрезков, меньшим на один, чем исходная ломаная линия.
  • Повторяем процесс до тех пор, пока не получим точку. Эта точка и будет являться точкой заданной кривой Безье с параметром .

Слеюующая иллюстрация демонстрирует этот процесс для кубической кривой Безье:

Обратите внимание, что полученные в процессе промежуточные точки являются контрольными точками для двух новых кривых Безье, в точности совпадающих с исходной и в сумме дающих исходную кривую Безье. Этот алгоритм не только определяет точку кривой в , но и делит кривую на две части в , а также предоставляет описание двух суб-кривых в форме Безье.

Описанный алоритм справедлив для нерациональных кривых Безье. Для вычисления рациональных кривых в , можно спроецировать точку в ; например кривая в трехмерном пространстве должна иметь опорные точки и веса спроецированные в весовые контрольные точки . Затем обычно алгоритм переходит к интерполяции в .

The interpretation given above is valid for a nonrational Bezier curve. To evaluate a rational Bezier curve in , we may project the point into ; for example, a curve in three dimensions may have its control points and weights projected to the weighted control points . The algorithm then proceeds as usual, interpolating in . The resulting four-dimensional points may be projected back into three-space with a perspective divide.

In general, operations on a rational curve (or surface) are equivalent to operations on a nonrational curve in a projective space. This representation as the "weighted control points" and weights is often convenient when evaluating rational curves.


Также, кривая Безье может быть разделена в точке на две кривые с соответствующими контрольными точками: