BÉZIER PATCH
Avgust , 2000
Avtor : Anton Hribar
Mentor : Janez Krek
Program for drawing two Bezier patches
Uvod
Pri oblikovanju glinenih modelov v vzorčni delavnici iz gline z šablonami ( prostorskimi krivuljami ) odvzemajo odvečni material. Sablona zareže v glino in nastala površina je ploskev. Tako lahko definiramo ploskev kot množico točk v prostoru, ki jih popiše prostorska krivulja, ko se giblje skozi prostor in pri tem spreminja svojo obliko. Predpostavimio, da se giblje po prostoru Bezierjeva krivulja. V vsakem trenutku je določena z množico kontrolnih točk. Bezierjeva površina je tako direktna razširitev Bezierjeve krivulje. Točka na površini je podana z dvo-parametrično funkcijo, ki je sestavljena iz povezovalnih funkcij za vsak parameter posebej. Pij so kontrolne točke, ki tvorijo polieder .
Definicija in matematični zapis Bezierjeve površine
Površina je podana z mariko n x m kontrolnih tock .
.
Površina parametrizirana z dvema spremenljivkama je podana z enačbo :
Bi,n(u)Bj,m(v) je produkt bi-variantnih Bernsteinovih polinomov.
Matrični zapis Bezier-jeve površine
Z matričnim zapisom enačbe površine dobimo obliko , ki je primerna za uporabo v računalniku. Za opis površine z matrikami 4x4 imamo na razpolago 16 kontrolnih točk. Tako je :
Parametra u in v zavzemata vrednosti od 0 do 1 .
Lastnosti Bezier-jeve površine
Lastnosti površine so podobne lastnostim Bezierjeve krivulje :
Izris
Za izris se izvedejo geometrijske transformacije nad kontrolnimi točkami ter koordinatnim sistemom. Točke Bezierjeve mreže se izračunajo iz transformiranih kontrolnih točk. Za izris 3D objekta na 2D ravnino potrebujemo 2 koordinati, v tem primeru se izrisujejo x in z koordinate Bezierjeve mreže. Program računa z zmnoženimi matrikami za rotacijo, skalacijo in translacijo.
Transformacijske matrike v 3D prostoru so sledeče oblike :
Rotacije
Okrog osi X:
Okrog osi Y:
Okrog osi Z:
Translacija
Skaliranje
Transformacija točk se vrši z množenjem vektorja točke z transformacijsko matriko. Vektor točke je dimenzije 3x1, transformacijska matrika v 3D pa je velikosti 4x4. Produkt matrik, je mogoč le takrat, ko je število stolpcev leve matrike enako številu vrstic desne matrike. Da je množenje mogoče, se v vektor točke uvede še četrto koordinato, ki ima vrednost 1. Tako dobimo t.i. homogene koordinate, ki omogočajo množenje vektorja točke z transformacijsko matriko.
Program prikaže dve Bezierjevi površini, kot žični model. Vsako površino določimo s 16 kontrolnimi točkami. Posamezna kontrolna točka ( i , j ) je določena z x, y in z koordinato. Koordinate kontrolnih točk zapišemo v tekstovnem polju za vsako površino posebej. Zapis je oblike [ i j x y z ], kjer sta i,j indeksa točke in x y z njene koordinate. Začetna postavitev kontrolnih točk je takšna, da je prehod iz ene v drugo površino zvezen.
Gostoto žičnega modela površine določimo z velikostjo števil U in V.
Program za določitev kontrolnih točk in izris površine
Program omogoča nazorno predstavitev problema s katerim se je ukvarjal Pierre Bezier. Bezier je bil inženir Renaulta, ki se je v 60. letih ukvarjal s problemom, kako prototipno geometrijo avtomobilske karoserije ( katero so oblikovali npr. iz lesa ) prenesti na risalne deske, oziroma jo nedvoumno matematično določiti. Leta 1966 je v reviji Automatisme objavil članek, kjer je definiral 3D parametričen popis krivulj.
Bezierjeva površina je pogosta in osnovna predstavitev površine v računalniški grafiki, njeno razumevanje pa predstavlja temelj za razumevanje tega področja.
Pri izdelavi naloge sem se seznanil z osnovami jezika JavaScript ter izrisom z uporabo PHIGS knižnice. Pomembne pa so tudi 3D transformacije, ki omogočajo, da dobimo prostorsko predstavo o objektu.