B-splajn kriva (eng. B-spline curve, rus. B-сплайн кривая) je vrsta splajn kriva koja se u CAD softverima koristi za modeliranje složenih oblika.


Na engleskom govornom područiju se ova vrsta krivih često naziva i Freeform curve (kriva slobodnog oblika). Slovo „B“ u nazivu B-splajn znači bazni (eng. B-spline je skraćena verzija od Basis spline). B-splajn kriva je linearna kombinacija baznih splajnova, odnosno glatka parametarska kriva sastavljena od više raspona između kojih je definisan kontinuitet. Mesta gde su rasponi spojeni se nazivaju čvorovi. Kontinuitet obezbeđuje da kriva bude glatka t.j. da se prilikom promene oblika spojevi između raspona ponašaju kao jedna kriva. Svaki raspon je opisan posebnom polinomskom jednačinom, odnosno svaki raspon je posebni polinom.

Oblik B-splajn kriva je definisan skupom kontrolnih tačaka, t.j. njihovim brojem i položajem.

Prva i zadnja kontrolna tačka se obično (mada ne moraju) nalaze na B-splajn krivi, a kontrolne tačke između ove dve se nikad ne nalaze na krivi. Da budem precizan, mogu da se nalaze, ali samo kada je stepen B-splajn krive jednak 1. U tom slučaju B-splajn kriva nema oblik zakrivljene linije već izlomljene linije t.j. ima isti oblik kao njen kontrolni mnogougao.


B-splajn kriva

Oblast matematike koja proučava B-splajn krive se naziva numerička analiza.

Osnovu B-splajn kriva su razradili Nikolaj Lobačevski (početkom 19. veka) i Isak Schoenburg (sredinom 20. veka), a u CAD softvere ih je uveo matematičar Richard Riesenfed (početkom 70-ih prošlog veka). Ova vrsta krivih je imala niz prednosti u odnosu na Bezjeove krive i veoma brzo su postale deo svih značajnih CAD softvera. Ovde treba napomenuti da se danas u CAD softverima uglavnom ne koriste B-Splajn krive, već njihova unapređena verzija NURBS. Danas su algoritmi za konstruisanje, uređivanje i manipulaciju sa ovim krivama deo skoro svakog CAD softvera.

B-splajn krive su vrsta kriva slobodnog oblika tako da imaju slične geometrijske karakteristike kao ostale vrste kriva koje spadaju u ovu grupu: na sličan način se u CAD softverima konstruišu, slično se sa njima manipuliše, slično se uređuju, imaju slične osobine… To znači da za njih takođe važi sve što sam pisao u tekstovima koji se tiču opštih teoretskih razmatranja o krivama slobodnog oblika.

Bezjeove krive su bile prva vrsta kriva slobodnog oblika koja se u CAD softverima počela koristiti za modeliranje složenih oblika. Kod njih prva i zadnja kontrolna tačka se nalaze na krivoj, a ostale kontrolne tačke određuju oblik krive, ali se ne leže na krivi. Bezjeova kriva je aproksimativna kriva, odnosno kriva koja pomoću polinomskih funkcija aproksimira raspoložive kontrolne tačke t.j. oblik  kontrolnog mnogougla.

Bezjeove krive imaju dva velika nedostatka koja ih čine ne baš preterano praktičnim za konstruisanje složenih kontura:

  • stepen im zavisi od broja kontrolnih tačaka - povećanjem broja kontrolnih tačaka povećava se stepen krive. Drugim rečima, povećava se stepen polinoma koji opisuje krivu, a to veoma usložnjava proračune.

  • nije moguća lokalna kontrola njihovog oblika - pomeranje kontrolnih tačaka Bezjeove krive izaziva promenu oblika cele krive što onemogućava lokalnu kontrolu oblika krive.

Zamislite da treba nacrtati neku složenu konturu koja je definisana sa 20 kontrolnih tačaka. Ako  konturu nacrtamo koristeći Bezjeovu krivu, biće nam potrebna kriva čiji oblik je opisan polinomskom funkcijom sa najvećim eksponentom 19. Proračuni ovakvih kriva su zahtevni i ne treba biti veliki stručnjak da bi se zaključilo da Bezjeove krive baš i nemaju veliku praktičnu vrednost u CAD softverima. Zbog pojednostavljivanja proračuna više bismo voleli da radimo sa krivama nižeg stepena, a takođe voleli bi smo da imamo mogućnost lokalne promene oblika. Rešenje oba problema je pronađeno u Splajn krivama t.j. u deobi krive na segmente (raspone) sa malim stepenima (polinomske funkcije sa manjim najvećim eksponentima). B-splajn krive su posebna vrsta splajn kriva koja se pokazala kao veoma kvalitetno rešenje, i danas se koristi ne samo u CAD već i u ostalim vrstama grafičkih softvera (vektorsko crtanje, 3D modeliranje…).

 

Da bi računar mogao da proračuna i iscrta B-splajn krivu na ekranu, potrebno je da raspolaže položajima kontrolnih tačaka, stepenom krive i vektorom čvorova koji definiše vrednost parametra u kojem se nalaze čvorovi. 

Neka je dato n+1 kontrolnih tačaka i vektor čvorova (t1, t2,…, td+(n+1). Opšta jednačina koja opisuje B-splajn krivu se može napisati na sledeđi način:


Gde je:

  • t - parametar 

  • d - stepen krive (bilo koju vrednost između 2 i n+1)

  • P1, P2,...,Pn+1 su kontrolne tačke

  • bi,d(t) je rekurzivno definisana bazna funkcija (polinomske jednačine za opisivanje raspona od kojih se sastoji kriva)
     

Bazna funkcija zavisi samo od vrednosti stepena i vrednosti u vektoru čvorova. Bazna funkcija B-splajn krive je definisana rekurzivnim korišćenjem Koks-De burove formule rekurzije (Cox-Deboor recursion formula):

 

 

B-splajnovi su generalizacija Bezjeovih krivih i B-splajn bez „unutrašnjih čvorova“ je Bezjeova kriva.

Ova vrsta krivih nudi intuitivan i fleksibilan način za precizno predstavljanje veoma složenih oblika. Njihova prednost nije samo lakoća konstruisanja već i jednostavna naknadna promena njihovog oblika, uređivanje, transformisanje (pomeranje, rotacija, simetrično preslikavanje, skaliranje (slično pretvaranje)…). 

B-splajn krive se u CAD softverima konstruišu zadavanjem kontrolnih tačaka ili zadavanjem čvorova. Promena oblika B-splajn kriva se obavlja pomeranjem kontrolnih tačaka ili čvorova (tačaka za uređivanje). Zadavanje kontrolnih tačaka korisnik obavlja klikanjem miša na radnu površinu CAD softvera, a pomeranje, vučenjem pomoću miša. Na sledećoj animiranoj slici možete videti kako izgleda postupak konstruisanja, a kako postupak promene oblika B-splajn krive. Animacija je napravljena u besplatnom CAD softveru FreeCAD.

 

 

B-splajn krive t.j. njihova unapređena verzija NURBS krive su najčešća vrsta kriva slobodnog oblika koja se u CAD softverima koriste za modeliranje 3D modela složenog oblika. Koriste se za modeliranje zapreminskih 3D modela, ali najveću upotrebu imaju u softverima za površinsko 3D CAD modeliranje. Pomoću njih se modeliraju proizvodi koji imaju izuzetno složene oblike kao što su na primer karoserija automobila, površina aviona, trupovi brodova, kućišta ručnih električnih alata, kućišta kučnih i kuhinjskih električnih aparata, plastični delovi složenog oblika…


 

 Osobine B-splajn kriva:

  • pomoću njih se mogu predvidivo i lako crtati izuzetno složene 2D i 3D konture,

  • oblik im zavisi od položaja kontrolnih tačaka,

  • promenom polažaja kontrolnih tačaka menja im se oblik,

  • promena položaja kontrolne tačke izaziva lokalnu promenu oblika krive (kriva će promeniti oblik samo u okolini te kontrolne tačke),

  • prva i poslednja kontrolna tačka ne moraju, ali obično leže na B-splajn krivi, ostale kontrolne tačke ne leže na krivi (kriva ne prolazi kroz njih),

  • Tangenta u prvoj i zadnjoj tački B-splajn krive se poklapa sa prvom i zadnjom linijom kontrolnog mnogougla,

  • kontrolne tačke privlače krivu (Parametar koji govori o jačini kojom kontrolna tačka privlači krivu se naziva Težina. Kod B-splajn kriva sve kontrolne tačke imaju istu težinu, t.j. istom jačinom privlače krivu.),

  • za opisivanje B-splajn kriva je potrebno više podataka od opisivanja Bezjeovih kriva (Da bi CAD softver proračunao oblik B-splajn krive i prikazao je na radnoj površini potrebno je da raspolaže pozicijama kontrolnih tačaka, stepenom krive i vektorom čvorova. Za Bezjeove kriva je dovoljno imati samo stepen krive i pozicije kontrolnih tačaka.),

  • stepen B-splajn krive ne zavisi od broja kontrolnih tačaka,

  • moguće je dodati ili oduzeti kontrolne tačke, a da se ne promeni stepen krive,

  • moguć je neujednačen (Non-uniform) razmak između čvorova (nejednaki rasponi) što krive čini fleksibilnijim i moguće je sa manjim brojem kontrolnih tačaka postići sitne detalje na krivama,

  • pomoću njih se mogu predstavljati Bezjeove krive, 

  • pružaju fleksibilniju kontrolu oblika od Bezjeovih kriva, 

  • pomoću njih nije moguće precizno predstaviti mnoge jednostavne krive kao što su krugovi, elipse... (Da bi to bilo moguće potrebna je generalizacija B-splajn kriva t.j. NURBS krive),

  • oblik im se prilagođava obliku kontrolnog mnogougla,

  • B-splajn kriva, odnosno kontrolne tačke se uvek nalaze unutar konveksnog omotača krive,

  • nijedna prava linija ne seče B-splajn krivu više puta nego što seče kontrolni mnogougao.

  • vektori čvorova mogu da sadrže podudarne čvorove što omogućava kontrolu kontinuiteta u čvorovima, 

  • jednorasponska B-splajn kriva (takođe i NURBS) je potpuno ista kao Bezjeova kriva.

  • afino su invarijantne,

  • ...
          

Submitted by Čeh Jan on