Главная страница
Навигация по странице:

  • Рис. Кривые Безье.‑15

  • Алгоритмы компьютерной графики Пешков Анатолий Тимофеевич, БГУИР. 1 отображение просранства пользователя и машинного носителя 4


    Скачать 1.86 Mb.
    Название1 отображение просранства пользователя и машинного носителя 4
    Дата24.09.2022
    Размер1.86 Mb.
    Формат файлаdoc
    Имя файлаАлгоритмы компьютерной графики Пешков Анатолий Тимофеевич, БГУИР.doc
    ТипДокументы
    #693275
    страница5 из 20
    1   2   3   4   5   6   7   8   9   ...   20

    2.3 Кривые Безье.



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

    Кривые Безье строятся на основании так называемого многочлена Безье.

    Многочлен Безье задается в параметрической форме через параметр t. При этом связь параметра t с декартовыми координатами задается как:
    x = Px(t); y = Py(t),

    где параметр t изменяется в диапазоне

    0<=t<=1.
    Если заданы точки-ориентиры :
    x0,y0; x1,y1;... xi,yi;.... xm,ym,
    то многочлен Безье представляется в виде:


    m

    Px(t)=Cmiti (1-t)m-i xi;

    . i=0




    . m

    Py(t)=Cmiti (1-t)m-i yi, . i=0


    где 0 <= t <= 1;
    В векторной форме многочлен Безье задается как:



    Вынесем из под знака суммы слагаемые со значением i=0 и i=m, представив многочлен Безье в виде:


    Если учесть, что 0=1, 00=1 и Сm0mm =1 ,то будем иметь:
    

    Найдем значения для P при t=0 и t=1:

    Подставив в полученное выражение значение t=1и t=0, получим:



    Оценим поведение многочлен Безье в окрестностях точек t=0 и t=1. Для этого применим разложение функции f(x) в окрестности точки x=а в ряд Тейлора:
    f(x)=f(a) + ((x-a)/(1f(1)(a) + ((x-a)2/(2f(2)(a) + ...+
    + ((x-a)2/(2f(2)(a)+ R(x n+1),

    где:

    • f(i)(a) – i-ая производная функции f(x) в точке x=a;

    • R(x n+1)- остаточный член, определяющий погрешность порядка n-ой степени x.


    Для многочлен Безье в окрестности точки t = 0 будим иметь:
    P(t=0) = P(0)+tP(1)(0)+R(t2) P(0)+tP(1)(0) (2.3-2)
    (так как параметр t, оставаясь меньше единицы, стремится к нулю, достаточно остановиться на погрешности второго порядка).
    P(t=1) = P(1)+(1-t)P(1)(1)+R((1-t)2) P(1)+(1-t)P(1)(1). (2.3-3)

    Найдем общее выражение для производной многочлен Безье:




    При t=0 имеем:



    или:



    При t=1 будем иметь:



    или:



    П олученные значения производных для значений t = 0 и t = 1 подставим в выражения (2.3-2), (2.3-3):

    Из полученных выражений видно, что кривая Безье в окрестности точки t= 0 стремится к прямой P0P1, отличаясь от нее тем меньше, чем t ближе к 0, а в окрестности точки t =1 она стремится к прямой Pm-1Pm, отличаясь от нее тем меньше, чем t ближе к 1.

    Выведем рекурсивные выражения для расчета функции, определяемой полиномом Безье.

    Сначала выведем рекурсивное выражение для расчета Сmi.

    Покажем, что имеет место

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

    В выражение (2.3-1) вместо Сmi подставим Сm-1i +Cm-1i-1.



    Обозначим многочлен, построенный на m+1 точках

    x0,y0; x1,y1;... xi,yi;.... xm,ym,
    как P0,m(t). Легко убедиться, что часть выражения (2.3-4), помеченная первой фигурной скобкой, представляет собой полином Безье P0,m-1(t), построенный на m точках:
    x0,y0; x1,y1;... xi,yi;.... xm-1,ym-1,
    а часть выражения (2.3-4), помеченная второй фигурной скобкой, представляет собой полином Безье P1,m(t), построенный на m точках:
    x1,y1;... xi,yi;.... xm,ym,
    В таком случае можно выразить многочлен Безье P0,m(t), построенный на точках:

    P0, P1, ….Pi,….. Pm-1, P1,m,

    через многочлен Безье P0,m-1(t), построенный на точках

    P0, P1, ….Pi,….. Pm-1,

    и многочлен Безье P1,m(t), построенный на точках

    P1, ….Pi,….. Pm-1, P1,m

    следующим образом:



    Отсюда следует, что для определения значения полинома Безье P0,m(t), заданного на точках-ориентирахP0, P1, ….Pi,….. Pm-1, P1,m, для некоторого конкретного значения параметра t, можно использовать следующее правило:

    1. для заданного значения t (например, t=0.5) находится значение полинома Безье, заданного на точках-ориентирахP0, P1, ….Pi,….. Pm-1, P1,m-1, и полинома Безье, заданного на точках-ориентирахP1, ….Pi,….. Pm-1, P1,m;

    2. определяется отрезок, соединяющий найденные точки;

    3. в качестве значения полинома Безье P0,m(t), заданного на точках-ориентирахP0, P1, …Pi,….. Pm-1, P1,mберется точка, соответствующая середине найденного отрезка.

    В качестве итерационного алгоритма формирования значения полинома Безье для текущего значения t можно использовать следующий алгоритм.

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

    Граф–схема такого алгоритма приведена на .

    На Error: Reference source not found приведены примеры расчета значения полинома Безье для разного количества точек-ориентиров и разных значений параметра t.

    На приведенном рисунке серыми кружочками обозначены вводимые промежуточные точки-ориентиры, получаемые в процессе расчета кривой Безье. Зеленым кружочком обозначена точка, которая соответствует значению полинома Безье при заданном значении параметра t.

    Содержательно многочлен Безье можно представить в виде модели, в которой используется эластичная магнитная нить, закрепленная в точках P0 и Pn, расположенная в магнитном поле, создаваемом одинаковыми магнитами, помещенными в точках P0, P1,…, Pm-1.

    Для того чтобы обеспечивать большее «притяжение» к какой-либо точке-ориентиру, можно использовать механизм кратных точек (удвоение, утроение и т.д.), в соответствующее количество раз увеличивающий напряженность поля, создаваемого в этой точке. Этот механизм иллюстрируется Рис. Формирование дуги окружности.-13.

    На рисунке механизм кратных точек используется для точек-ориентиров P1, P2, которые берутся с одинаковыми координатами X, Y. Поэтому при рассмотрении полинома, определенными точками-ориентирами P1, P2, в качестве его значения для любой заданной величины параметра t выбирается точка, соответствующая P1 (или, что то же самое P2). Поэтому на приведенном рисунке промежуточная точка-ориентир совпадает с начальными точками-ориентирами P1, P2.


    Рис. Кривые Безье.‑15




    Рис. Кривые Безье.‑16


    Рис. Кривые Безье.‑17
    1   2   3   4   5   6   7   8   9   ...   20


    написать администратору сайта