Читайте также:
|
|
Во многих случаях при работе с кривыми Безье нужно, чтобы они были одинаковых степеней. Кроме того, хотя кривые Безье высших степеней труднее рассчитывать, они все же являются более гибкими при разработке. Поэтому может быть очень полезным увеличение степени кривой Безье без изменения ее формы. Заметьте, что " без изменения формы кривой " является ключевым пунктом; иначе увеличение степени не принесет никакой практической пользы. Увеличение степени кривой Безье без изменения ее формы называется повышением степени. Далее мы обсудим только алгоритм.
Допустим, дана кривая Безье степени n, определяемая n + 1 контрольными точками p 0, p 1, p 2,..., p n и нам надо увеличить степень этой кривой до n + 1 без изменения ее формы. Так как кривая Безье степени n + 1 определяется n + 2 контрольными точками, нам необходимо найти этот новый набор точек. Очевидно, p 0 и p n должны быть в новом наборе точек, потому что кривая проходит через них. Таким образом, нам нужно только n новых контрольных точек. Пусть новый набор контрольных точек будет q 0, q 1, q 2,..., q n +1. Как упоминалось ранее, q 0 = p 0 и q n +1 = p n. Другие контрольные точки рассчитываются так:
Если вас не устраивает такая общая формула, вот вам формулы для каждой контрольной точки от q 1 до q n.
Каждый сегмент исходной ломаной содержит точно одну новую контрольную точку. Говоря точнее, сегмент p i -1 p i содержит новую контрольную точку q i. Вспомним из обсуждения алгоритма de Casteljau, что точку C на отрезке прямой между точками A и B, причем отношение расстояний между A и C и между A и B равно u, можно записать в виде C = (1 - u) A + u B. Из формул для новых контрольных точек видно, что отношение расстояний между p i -1 и q i и между p i -1 и p i равно 1 - i /(n +1). Тем не менее, в отличие от алгоритма de Casteljau, это соотношение не постоянно, а варьируется в зависимости от i. Но все же вычисления очень похожи на алгоритм de Casteljau.
Получив новый набор точек, исходный можно отбросить. Так как каждый сегмент исходной ломаной содержит новую контрольную точку, процесс получения новой ломаной похож на обрезание углов у исходных контрольных точек. Это показано на следующем рисунке. Рисунок показывает повышение степени с 4 до 5, новая ломаная показана темными линиями, старая - светлыми. В таблице слева указаны соотношения, по которым получаются точки новой ломаной.
i | 1 - i /(n +1) |
0.8 | |
0.6 | |
0.4 | |
0.2 |
Заметьте, что повышение степени можно проводить последовательно сколько угодно раз, пока ваша система это сможет делать. Заметьте также, что с увеличением степени растет и количество контрольных точек. Кроме того, контрольная ломаная приближается к кривой.
На следующих рисунках, начиная с кривой 6 степени, степень повышалась до 7, 8, 10, 15 и, в итоге, 29. Видно, что форма кривой оставалась неизменной, а ломаная все ближе и ближе пдоходила к кривой. При увеличении степени до бесконечности, ломаная сливается с кривой - ее предельным положением.
Дата добавления: 2015-10-29; просмотров: 202 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Разбиение Кривой Безье | | | B-spline: Мотивация |