Читайте также:
|
|
Значение разбиения в разделении данной кривой Безье в p (u) для некоторого u на два отрезка кривой, каждый из которых также является кривой Безье. Из-за того, что полученные кривые должны иметь свои собственные наборы контрольных точек, исходный набор точек отбрасывается. Кроме того, так как исходная кривая Безье степени n разделяется на две части, каждая из которых является подмножеством исходной кривой n степени, результирующие кривые Безье также должны быть степени n.
Наша задача:
Дан набор n + 1 контрольных точек p 0, p 1, p 2,..., p n и значение параметра u в пределах от 0 до 1, нужно найти два набора по n +1 контрольных точек q 0, q 1, q 2,..., q n и r 0, r 1, r 2,..., r n, чтобы кривая Безье, построенная по точкам q i (соотв., r i) была частью исходной кривой Безье на [0, u ] (соотв., [ u,1]).
Хоть проверка корректности и немного скучна, но сам алгоритм очень прост. Фактически, алгоритм de Casteljau для определения точки p (u) на кривой дает всю необходимую информацию. На рисунке снизу слева, показаны все промежуточные шаги при использовании этого алгоритма, а на рисунке справа показано разбиение кривой на две части в точке p (u), а также соотв. этим частям ломаные контрольных точек.
Если вы хорошо сравните эти два рисунка, вы, вероятно, заметите, что ломаная слева состоит из точек p 00 = p 0, p 10, p 20, p 30, p 40, p 50 и p 60 = p (u), а кривая справа - из точек p 60 = p (u), p 51, p 42, p 33, p 24, p 15 и p 06 = p 6. Следующие рисунки иллюстрируют выбор этих точек.
Вспомните о треугольной схеме вычисления по алгоритму de Casteljau. Для данного u нужно n итераций, чтобы вычислить p (u). По ходу вычислений, берем первую и последнюю точки в каждом столбце, а в конце набор всех первых (соотв., последних) точек даст ту часть разделения исходной кривой, которая лежит на отрезке [0, u ] (соотв., на [ u,1]). Таким образом, в следующей треугольной схеме, двигаясь от верхнего угла по направлению стрелок, а затем от вершины против направления стрелок к нижнему углу, получим два набора точек для двух соответствующих отрезков разделения.
Заметьте, что так как отрезок, соединяющий точки 50 и 51, касателен кривой в точке 60, то и последний сегмент левой кривой (т.e., между точками 50 и 60) касателен левой кривой, а первый сегмент правой кривой (т.e., между точками 60 и 51) соответственно касателен правой.
Зачем Это Нужно, блин? [Why Do We Need Curve Subdivision?]
Э, не скажи. Тут великая польза 8-). Например, можно использовать ее для нахождения пересечения кривых Безье, их расчета, для упрощения разработки кривых. Допустим, у нас есть кривая, но она нам не очень подходит. В этом случае можно разделить ее на две части в нужной точке, на подходящую и неподходящую. Затем, можно забыть о нормальной части и сосредоточиться на "кривой".
Можно применять разделение кривой сколько угодно раз. Но нужно помнить, что, если мы хотим сохранить гладкость перехода, нужно, чтобы отрезки в точке соединения были коллинеарны.
Дата добавления: 2015-10-29; просмотров: 189 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Соотношение Между Производной и Алгоритмом de Casteljau | | | Повышение Степени Кривой Безье |