User:Драган~enwiki/sandbox

Безиеровa кривa

Безиеровата крива претставува параметарска крива, со големо значење во компјутерската графика и сродните области.

Слика 2: Безиерова крива

Безиеровите криви добиле широк публицитет во 1962 година заради францускиот инженер Пјер Безиер, кој ги користел при дизајнирањето автомобили. Кривите биле развиени во 1959 година од Пол де Каселје со помош на негов алгоритам, кој се покажал како нумерички стабилна метода за проценување на Безиеровите криви. Во векторската графика, Безиеровите криви се важна алатка која се користи за моделирање на мазни криви кои можат да се скалираат неограничено. „Патеки“(„paths“), како што се нарекуваат во програмите за манипулација со слики (Inkscape, Adobe Ilustrator, Adobe Photoshop и GIMP - GNU1 Image Manipulation program), претставуваат комбинации од повеќе Безиерови криви. За патеките не важат ограничувањата кои ги имаат растерските слики и се подложни на модификации.

Слика 3: Безиерова патека во Adobe Ilustrator CS2 Безиеровите криви се широко применети во компјутерската графика за моделирање на мазни кривини. Бидејќи кривата е комплетно ограничена од конвексната обвивка и нејзините контролни точки, можно е манипулирање со особините на дадената крива. Контрола врз закривеностите меѓу јазлите се врши со помош на контролните точки, кои се јавуваат при селекцијата на некој јазол, а контрола врз локацијата на кривата се врши со помош на точки-котви (anchors), кои се совпаѓаат со локациите на јазлите. (а)                                                                     (б)

Слика 4: Употреба на контролни точки за регулирање на закривеноста

Линиите меѓу јазолот и контролната точка, во слика 4(а), ја покажуваат насоката на кривата при нејзиното влегување и излегување од јазолот-котва. Растојанието меѓу јазолот и контролната точка е пропорционално со насоката на кривата. Поголемото растојание од јазолот до контролната точка, слика 4(б), предизвикува поголемо виткање на кривата. При менувањето на контролните точки, местата на јазлите се непроменети. Квадратните и кубните Безиерови криви се најчесто применувани, со оглед на тоа дека кривите од повисок степен се потешки за проценка. Кога се потребни посложени форми, се спојуваат повеќе Безиерови криви од понизок ред и се добиваат патеки. За да се гарантира мазноста, контролната точка во која се среќаваат две криви треба да е колинеарна со по една точка од двете страни. Наједноставен метод за растеризација на Безиерова крива е да се подели со што е можно повеќе точки и да се добие секвенца од линиски сегменти. Меѓутоа, ова не е гаранција дека растеризираната линија ќе изгледа доволно мазно, бидејќи точките може да се премногу раздалечени. Од друга страна, можно е да има повеќе од доволно точки во линеарните делови на кривата. Често применуван адаптивен метод е рекурзивната поделба, со кој се проверуваат контролните точки на кривата дали се во одредени граници на толерантно отстапување. Ако претставувањето не е доволно прецизно, кривата се дели параметарски на два сегменти, 0 ≤ t ≤ 0.5 и 0.5 ≤ t ≤ 1 и постапката се повторува за секоја половина. Постојат и напредни диференцијални методи, но потребно е големо внимание при аналзата на грешките. Аналитичките методи во кои сплинот се „сече“ и се наоѓаат корени од кубните полиноми (за кубни сплинови), а се работи со повеќекратни корени, не се користат многу често. Во програмите за анимација, како што се Adobe Flash и Adobe Shockwave, Безиеровите криви се користат за означување на движењето. Корисникот ја означува саканата патека со помош на Безиерови криви, а програмата ги генерира потребните рамки со кои е претставено движењето на објектот по патеката. Безиерова крива од степен n и дадени точки P0, P1, ..., Pn, се претставува со равенката:

На пример, за n = 5:

Оваа формула може да се изрази и на поинаков начин. Ако со ја означиме Безиеровата крива одредена со точките P0, P1, ..., Pn, тогаш:

Со овие параметарски криви се поврзани и одредени термини. Имаме:

каде полиномите:

се познати како Бернштајнови  базични  полиноми од степен n, дефинирани меѓу t0 = 1 и (1 - t)0 = 1. Точките Pi се нарекуваат контролни точки на Безиеровата крива. Полигонот кој се формира со поврзување на контролните точки со линии, почнувајќи од P0 и завршувајќи со Pn, се вика Безиеров полигон, но познат е и како контролен полигон, полибезиер или безиергон.

Слика 5: Безиеров полигон

Конвексната обвивка на Безиеровиот полигон ја содржи Безиеровата крива. Кривата започнува во P0 и завршува во Pn; ова се нарекува крајна интерполација. Кривата е права линија ако и само ако контролните точки се колинеарни. Почетокот (крајот) на кривата е тангента на првиот (последниот) дел на Безиеровиот полигон. Кривата во секоја точка може да се подели на две нови криви, односно на онолку колку што е потребно, и секоја нова крива ќе биде Безиерова крива. Некои криви, кои наизглед се едноставни, како на пр., кругот, не е можно точно да се опишат со Безиерови криви (со четири-делна Безиерова крива може приближно да се добие круг, со максимална радијална грешка помала од еден промил, при што секоја внатрешна контролна точка е на растојание, хоризонтално или вертикално од надворешната контролна точка). Повоопштено, кубна Безиерова крива од n делови, може приближно да опише круг, кога секоја внатрешна контролна точка е на растојание од 4/3 tan (t/4) од секоја надворешна точка на кругот, при што t е 360/ n степени, а n > 2. Крива која се наоѓа „паралелно“ од дадена Безиерова крива, обично се нарекува офсет крива, не може да биде точно опишана со Безиерова крива (освен во некои тривијални случаи). Меѓутоа, со примена на хеуристички (истражни) методи, можно е да се добие соодветно решение. Секоја квадратна Безиерова крива е и кубна Безиерова крива, или воопштено, секоја Безиерова крива од n-ти степен е исто така крива од m-ти степен, за секое m > n. Крива од n степен со контролни точки P0, P1, ..., Pn е еквивалентна (вклучувајќи ја и параметризацијата) на крива од n+1 степен со контролни точки P'0, P'1, ..., P'n, при што: 4.1. Линеарнa Безиеровa кривa

Меѓу точките P0 и P1, линеарната Безиерова крива всушност е права линија. Кривата се добива со равенката:

и е еквивалентна со линеарната интерполација. t во функцијата за линеарна Безиерова крива може да се смета за показател кој покажува колку далеку B(t) е од P0 до P1. На пример, ако t=0.25, B(t) е една четвртина од патот меѓу P0 и P1. Како што варира од 0 до 1, B(t) ја опишува кривата линија меѓу P0 и P1.

Слика 6: Конструкција на линеарна Безиерова крива 4.2. Квадратнa Безиеровa кривa

Квадратната Безиерова крива претставува патеката означена со функцијата B(t) во однос на точките P0, P1 и P2:

Квадратната Безиерова крива е и параболичен сегмент. Truetype фонтовите користат Безиерови сплинови кои се составени од квадратни Безиерови криви. За конструирање на квадратни Безиерови криви се користат посреднички точки Q0 и Q1, такви што додека t варира од 0 до 1,:

1.точката Q0 варира од P0 до P1 и опишува линеарна Безиерова крива; 2.точката Q1 варира од P1 до P2 и опишува линеарна Безиерова крива; 3.функцијата B(t) варира од Q0 до Q1 и опишува квадратна Безиерова крива.

Слика 7: Конструкција на квадратна Безиерова крива

4.3. Кубнa Безиеровa кривa

Четирите точки: P0, P1, P2 и P3, во рамнина или во простор, дефинираат кубна Безиерова крива. Кривата започнува во P0, оди кон P1 и стигнува до P3, доаѓајќи од насока на P2. Обично нема да ги помине точките P1 или P2; овие точки служат само да дадат информации за насоката. Растојанието меѓу P0 и P1 одредува „колку долго“ кривата ќе се движи во насока на P2 пред да се насочи кон P3. Параметарската форма на кривата е:

Системите како PostScript, Asymptote и Metafont, користат Безиерови сплинови составени од кубни Безиерови криви, за цртање на заоблени форми. За конструирање кубни Безиерови криви се користат посреднички точки Q0, Q1 и Q2 кои ги опишуваат линеарните Безиерови криви и точките R0 и R1 кои ги опишуваат квадратните Безиерови криви:

Слика 8: Конструкција на кубна Безиерова крива За конструкција на криви од повисок степен потребни се соодветно повеќе посреднички точки. За криви од четврт степен (квартни Безиерови криви) се конструираат посредничките точки Q0, Q1, Q2 и Q3 кои ги опишуваат линеарните Безиерови криви, точките R0 и R1 и R2 кои ги опишуваат квадратните Безиерови криви и точките S0 и S1, кои ги опишуваат кубните Безиерови криви:

Слика 9: Конструкција на квартна Безиерова крива

4.4. Полиномна форма

Понекогаш е пожелно Безиеровата крива да се изрази преку бином, наместо како сума од комплицираните Бернштајнови полиноми. Примената на биномната теорема во дефинирањето на кривата, би довело до:

каде:

Ова е практично ако C(t) може да се пресмета, наместо бројните пресметки за B(t); меѓутоа треба да се внимава бидејќи на кривите од повисок ред можно е да и′м недостасува нумеричка стабилност (во тој случај се користи алгоритмот на де Каселје).

4.5. Рационалнa Безиеровa кривa

Со рационалните криви се додаваат променливи големини за да се обезбеди поголема прецизност во следењето на арбитражните форми. Броителот е Безиерова крива во Бернштајнова форма, а именителот е сумата на Берн-штајновите полиноми. За n + 1 контролни точки Pi, рационалната Безиерова крива гласи:

односно:

5. Кубен Хермитов сплин

Кубниот Хермитов сплин го добил името според Чарлс Хермит (Charles Hermite). Претставува сплин од трет степен, при што секој полином од сплинот е во Хермитова форма. Хермитовата форма се состои од две контролни точки и две контролни тангенти за секој полином. Интерполацијата на мрежа со точки xk каде k = 1, ..., n, се врши за секој подинтервал (xk, xk + 1) поединечно (ако се познати вредностите на тангентите). Подинтервалот (xk, xk + 1) е нормализиран до (0, 1) преку t = (x − xk) / (xk + 1 − xk). Интерполација во единечен интервал (0, 1). Дадени се почетната точка p0 со почетна тангента m0 во t = 0 и крајната точка p1 со крајна тангента m1 во t = 1, за кои полиномот ќе гласи:

каде t ∈ (0,1).

Четирите основни Хермитови функции се:

Слика 10: Четирите основни Хермитови функции. Интерполантот во секој подинтервал е линеарна комбинација од овие четири функции.

Така што полиномот ќе гласи:

Интерполацијата во интервалот (xk, xk+1), е претставена со формулата:

каде h = xk + 1 − xk и t = (x − xk) / h. Може да се забележи дека вредностите на тангентите се зголемени h пати, во однос на интервалот (0, 1). Уникатност. Двете контролни точки и тангентите одредуваат полином од трет степен, кој се добива со претходната формула. Два различни третостепени полиноми кои ги задоволуваат условите во однос на ограничувањата, би се разликувале само по третостепениот полином, кој е еднаков на нула и има изводи еднакви на нула во две различни точки. Интерполација во интервалот (xk, pk), за k = 1, ..., n, се врши со примена на претходната процедура за секој интервал, при што тангентите за интервалите кои делат заеднички крајни точки се еднакви. Добиената интерполирана крива се состои од кубни Хермитови сплинови и глобално е со диференцијален континуитет во (x1, xn). При изборот на тангенти постојат неколку опции, од кои наједноставна е диференцијацијата во три точки, која не бара константни должини на интервалите, а k = 2, ..., n − 1:

Интерполација во единечен интервал без деривати. Ако p-1, p0, p1 и p2 се вредности што функцијата ги има во -1, 0, 1 и 2, тогаш со помош на Лагранжовиот (Lagrange) полином, кубната интерполација (CINT) може да се формулира како:

каде векторот од левата страна е независен од p. За да се добие извод, се навраќаме на уникатноста, и забележуваме дека вредностите за векторот од левата страна се кубни полиноми, кои се еднакви на нула во три од точките и еднакви на +1 во четвртата. Ова поедноставување е важно за трикубната интерполација, каде што оптимизацијата бара пресметка на CINTx шеснаесет пати, за ист x и различен p.

5.1. Кардинален сплин

Со линијата е претставена кривата, а со квадратите се претставени контролните точки pк. Кривата не ги допира првата и последната точка, меѓутоа тие влијаат врз формата на кривата.

Слика 11: Пример за дводимензионален кардинален сплин

Кардинален сплин се добива ако:

се користи за пресметка на тангентите. Со c е означена тензијата, која е во интервал (0,1). Во одредена смисла, ова може да се интерпретира како „должина“ на тангентата. Ако c = 1, тангентите ќе бидат еднакви на нула, а ако c = 0 се добива Катмул-Ромов сплин. 5.2. Катмул-Ромов сплин Доколку вредноста на тангентите е:

се добива Катмул-Ромов сплин, кој е посебен случај на кардиналниот сплин. Кривата е наречена според Едвин Катмул (Edwin Catmull) и Рафи Ром (Raphie Rom). Во компјутерската графика често се користат Катмул-Ромови сплинови за да се добие мазно интерполирано движење помеѓу клучните рамки. На пример, повеќето анимации за генерирање патеки за движењето на камерата помеѓу клучните рамки користат Катмул-Ромови сплинови. Често се користат бидејќи е релативно лесно да се пресметаат, гарантираат дека секоја позиција на клучните рамки ќе биде на своето место и дека тангентите на генерираната крива ќе бидат континуирани во повеќекратните сегменти. 5.3. Кочанек-Бартелсов сплин Кочанек-Бартелсовиот сплин или Кочанек-Бартелсовата крива, всушност е кубен Хермитов сплин, со параметри за тензија (t), тенденција (b) и континуитет (c), кои го дефинираат однесувањето на тангентите.

Слика 12: Кочанек-Бартелсови сплинови при различни вредности на тензијата, тенденцијата и континуитетот

При интерполација на n + 1 јазли во n кубни Хермитови криви, за секоја крива постои почетна точка pi и крајна точка pi+1, кои имаат почетна тангента di и крајна тангента si+1, дефинирани со:

Параметарот за тензијата (t), влијае врз должината на тангентниот вектор; параметарот за тенденцијата (b), примарно ја менува насоката на тангентниот вектор; а параметарот за континуитетот (c), влијае врз острината на промената меѓу тангентите. Доколку вредноста на секој од параметрите би била еднаква на нула, би се добил Катмул-Ромов сплин.

5.4. Монотона кубна интерполација

Ако било кој од претходно наведените кубни Хермитови сплинови се користи за интерполација на монотони податоци, интерполираната функција не мора да биде монотона, но монотоноста може да се зачува со прилагодување на тангентите. Монотоната кубна интерполација е варијанта на кубната интерполација која ја зачувува монотоноста на интерполираните податоци. При линеарна интерполација монотоноста е гарантирана, додека при кубна интерполација, како што е претходно спомнато, тоа не мора да е случај. Монотона интерполација може да се постигне со употреба на кубен Хермитов сплин, кој има тангенти mi модифицирани за да ја обезбедат монотоноста на резултантниот Хермитов сплин.

Слка 13: Кубна и монотона кубна интерполација на монотона низа податоци

Точките се означени со (xk, yk) за k = 1, ..., n.

1.Вредностите на тангентите за секоја точка ќе бидат:

за k = 2, ..., n − 1. За крајните точки важи:

2.Δk = (yk + 1 − yk) / (xk + 1 − xk) за k = 1, ..., n − 1. 3.За k = 1, ..., n − 1, ако Δk = 0, тогаш нека mk = mk + 1 = 0. За овие вредности на k се изоставаат чекорите 4 и 5. 4.Нека αk = mk / Δk и βk = mk + 1 / Δk. 5.Сега, бидејќи сакаме да го ограничиме позициониот вектор (αk, βk) на круг со радиус 3, ако αk2 + βk2 > 9, тогаш нека mk = τkαkΔk и mk + 1 = τkβkΔk, каде:

Притоа, потребен е само еден циклус на алгоритмот.

Проценката на интерполираниот сплин е еквивалентна со кубен Хермитов сплин, користејќи ги податоците xk, yk, и mk за k = 1, ..., n. За да се направи проценка во x, треба да се најде најголемото xдолно и најмалото xгорно од xк, така што xдолно ≤ x ≤ xгорно. Се пресметува:

h = xгорно − xдолно и  t = (x - xдолно) / h

Тогаш, интерполантот е:

fинтерполиран(x) = yдолноh00(t) + hmдолноh10(t) + yгорноh01(t) + hmгорноh11(t)

каде што hii се базичните функции за кубен Хермитов сплин.