Алгоритм де Кастельжо: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Нет описания правки |
|||
Строка 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.
Также, кривая Безье может быть разделена в точке на две кривые с соответствующими контрольными точками: