Ugrás a tartalomhoz

3D megjelenítési technikák

Dr. Fekete Róbert Tamás, Dr. Tamás Péter, Dr. Antal Ákos, Décsei-Paróczi Annamária (2014)

BME-MOGI

Görbék, felületek és testek

Görbék, felületek és testek

A szabadformájú geometriai objektumok modellezéséhez foglalkoznunk kell a térgörbék és a térbeli felületek matematikai leírásával. Ezek használata megfelel a vektoros geometriai ábrázolásnak. Először a térgörbék leírását vizsgáljuk, majd ezt általánosítjuk a szabadformájú felületek leírására. A térgörbék közvetlen függvénnyel való leírása nem alkalmas tetszőleges görbe közelítő ábrázolására, mert nem tudjuk biztosítani koordinátákban megkövetelt egyértékűséget. A (3.1) közelítés esetében, amikor az x függvényében közelítjük az y és z koordinátákat, akkor nem fordulhat elő, hogy egyetlen x értékhez több (y,z) páros tartozzon, a görbe azonban visszatekeredhet oda.

 

(3.1)

Az implicit görbemegadás, mely egy egyenlet gyökeinek görbéjét tartalmazza (3.2), gyakorlati szempontból használhatatlan.

 

(3.2)

Paraméteres görbemegadás

A fenti megfontolások alapján a paraméteres görbemegadást használjuk. Ennek lényege, hogy egy, a koordinátáktól független paraméter-intervallumot választva, a t paraméter () függvényeként írhatjuk fel a görbe pontjainak (x,y,z) koordinátáit (3.3).

 

(3.3)

Gyakorlatilag tehát a térgörbét, mint egy vektor-skalár függvényt ábrázoljuk (3.4) [3.2.].

 

(3.4)

Folytonosság és geometriai folytonosság

Egy térgörbe akkor és csak akkor folytonos, ha koordinátafüggvényei folytonosak. Tehát

 

(3.5)

Az intervallumon folytonos függvényeket C-vel jelöljük, a felső indexben 0-val (0. derivált folytonos), az alsó indexben az intervallummal.

Egy térgörbe akkor és csak akkor folytonosan differenciálható (a felső indexben az első deriváltat 1 jelöli), ha koordinátafüggvényei folytonosan differenciálhatók (3.6). Tehát

 

(3.6)

Hasonlóan egy térgörbe akkor és csak akkor kétszer folytonosan differenciálható, ha a koordinátafüggvények kétszer folytonosan differenciálhatók (3.7).

 

(3.7)

Definiáljuk a geometriai folytonosság fogalmát!

Definíció: Két csatlakozó görbeszakaszt a csatlakozó pontban k. rendben geometriailag folytonosnak mondunk – és Gk-val jelöljük – akkor és csak akkor, ha mindkét görbeszakasznak létezik olyan paraméterezése, hogy a görbék a pont két oldalán számított paraméter szerinti i. deriváltjai (ahol ik) megegyeznek.

Ha a fenti definíciót a G1 elsőrendű folytonosságra fogalmazzuk át, akkor a következő definíciót kapjuk.

Definíció: Két folytonos (C0) görbe akkor és csak akkor folytonos geometriailag 1. rendben (G1), ha a csatlakozó pontban a két görbe érintővektora egy irányba mutat. Más szavakkal, ha f(u) és g(v) görbék csatlakoznak akkor a csatlakozási pontban f’(u) és g’(v) párhuzamosak, és skaláris szorzatuk nem negatív. (3.4. ábra - G1 görbecsatlakozás)

3.4. ábra - G1 görbecsatlakozás

G1 görbecsatlakozás


Érdemes megjegyezni, hogy elegendő csak az egyirányúságot kikötni, hiszen az egyik oldalon lineáris átparaméterezéssel a görbe „bejárásának” sebessége skálázható. A második megfogalmazásban a skaláris szorzatra való megkötés a párhuzamos, de ellenkező irányba mutató érintőket szűri ki.

3.5. ábra - Nem G1 görbecsatlakozás

Nem G1 görbecsatlakozás


A G2 másodrendű geometriai folytonosság meghatározására igaz a következő, G. Neilson nevéhez fűzhető tétel is:

Tétel: Két C1 folytonosan csatlakozó görbeszegmens akkor és csak akkor csatlakozik G2 folytonosan, ha a második derivált vektorok különbsége párhuzamos a közös érintővektorral, azaz .

Nyilvánvaló, hogy k.-rendű geometriai folytonosságból nem következik a k.-rendű matematikai folytonosság, azaz , hiszen például első rendben csak azt írtuk elő, hogy az érintők egy irányba mutatnak és nem azt, hogy egyenlők.

Fordítva sem igaz az, hogy a k. deriváltak folytonosságából következik a k. rendű geometriai folytonosság, azaz . Ennek belátásához vizsgáljunk meg egy egyszerű kétdimenziós példát! Legyen két görbénk! Az egyik a (3.8)-nak megfelelő

 

(3.8)

a másik (3.9)-nek felel meg.

 

(3.9)

Könnyen ellenőrizhető, hogy a csatlakozó függvények a t=0 időpontban folytonosan differenciálhatók (C1), azonban a (3.6. ábra - Nem G1 görbecsatlakozás) ábrán jól láthatóan geometriailag nem folytonosak.

3.6. ábra - Nem G1 görbecsatlakozás

Nem G1 görbecsatlakozás


Az elsőfokú paraméteres görbeszakasz leírása

Legyen adva a térben egy szakasz két végpontjával! Ekkor a szakasz belső pontjai felírhatók mint a két végpont súlyozott közepe a paramétertől függő, változó súlyokkal a (3.10) szerint. A változó súlyok biztosítják azt, hogy t=0 időpont az egyenes szakasz P0 pontját, a t=1 időpont az egyenes szakasz P1 pontját, a köztes t értékek pedig a szakasz belső pontjait azonosítják (3.7. ábra - Az egyenes szakasz és adatai).

 

(3.10)

3.7. ábra - Az egyenes szakasz és adatai

Az egyenes szakasz és adatai


Ilyenkor a pontkoordinátákat szorzó függvényeket súlyfüggvényeknek hívjuk (3.11).

 

(3.11)

Érdemes a súlyfüggvények azon tulajdonságát megfigyelni, hogy az s0(0)=1 és s0(1)=0, valamint az s1(0)=0 és s1(1)=1. (3.8. ábra - Az egyenes szakasz súlyfüggvényei)

3.8. ábra - Az egyenes szakasz súlyfüggvényei

Az egyenes szakasz súlyfüggvényei


A (3.10) egyenlet átírása

 

(3.12)

ugyanez koordinátánként

 

(3.13)

amit átírhatunk mátrixos alakra

 

(3.14)

azaz

 

(3.15)

Definició: A pontok koordinátáit tartalmazó mátrixot (3.16) a geometriát jellemző mátrixnak hívjuk

 

(3.16)

Definició: A t paraméter hatványait (jelen esetben csak 0 és 1) tartalmazó T vektort paramétervektornak hívjuk (3.17)

 

(3.17)

Definició: A súlyfüggvények együtthatóiból adódó mátrixot a közelítés bázismátrixának hívjuk (3.18).

 

(3.18)

A (3.15) egyenlet mátrixos formája tehát

 

(3.19)

Egy térgörbét legegyszerűbben törtvonalakkal ábrázolhatunk. Ha adott r0, r1, …rm térbeli ponthalmazunk, akkor választhatunk úgy paraméterpontokat, hogy a ti+1-ti=1 legyen, és ekkor a t=t-ti paraméterezéssel bármely két pont között (3.11) súlyfüggvényeivel felírhatjuk a pontokat összekötő törtvonalakat.

Hermite-féle harmadfokú görbeszakasz

Legyen adott két pont a térben, és mindkét pontban egy-egy vektor (3.9. ábra - Hermite-féle görbeszakasz)! Keressük azt a görbét, amelyik kezdőpontja az egyik pont (P1), végpontja a másik (P4), míg kezdőérintője (R1) és végérintője (R4)!

3.9. ábra - Hermite-féle görbeszakasz

Hermite-féle görbeszakasz


Ez az előírás koordinátánként négy adatot, négy egyenletet és ezzel egy harmadfokú görbét határoz meg. A négy adat:

 

;    ;

;    

(3.20)

Ha az Hermite-féle görbeszakaszt (3.19) formában szeretnénk felírni, akkor ismerjük a geometriát leíró (3X4 méretű, a pontok és a vektorok által meghatározott) mátrixot és a (4x1 méretű) paramétervektort, a 4x4 méretű bázismátrix azonban ismeretlen.

 

(3.21)

A bázismátrix elemeinek meghatározásához elegendő a (3.21) egyenletekből csak az koordinátákra megfogalmaznunk.

 

(3.22)

Írjuk át (3.22) négy egyenletét egyetlen mátrixegyenletté!

 

(3.23)

Azt látjuk, hogy bármely peremhelyzetet megvalósító vektor megszorozva egy mátrixszorzattal önmagát adja. Ez azt jelenti, hogy

 

(3.24)

ahol az egységmátrix. Így

 

(3.25)

Ha kiszámítjuk az inverzet, akkor azt kapjuk, hogy

 

(3.26)

azaz

 

(3.27)

Az Hermite-féle szakasz tehát:

 

(3.28)

3.10. ábra - Az Hermite-féle súlyfüggvények

Az Hermite-féle súlyfüggvények


Az Hermite súlyfüggvények viselkedése hasonló a lineáris szakasz súlyfüggvényeihez. Az sP1(0)=1 és az sP1(1)=0, az sP4(0)=0 és sP4(1)=1. Hasonlóan a deriváltak súlyfüggvényeire igaz, hogy és , valamint és (3.10. ábra - Az Hermite-féle súlyfüggvények).

Bezier-féle harmadfokú görbeszakasz

A harmadfokú Bezier-görbét a síkban négy pont határozza meg. A kezdőpont az első pont, a végső pont pedig a negyedik. A kezdő érintőt az első és második pont határozza meg, a záró érintőt a harmadik és a negyedik pont definiálja, méghozzá úgy, hogy a pontok közti vektor éppen az érintő (derivált) háromszorosa (3.11. ábra - A harmadrendű Bezier-görbe).

3.11. ábra - A harmadrendű Bezier-görbe

A harmadrendű Bezier-görbe


Gondoljunk vissza az Hermite-görbére, amely használta a két végpontot (P1 és P4), valamint a két érintőt (R1 és R4). Határozzuk meg a Hermite-féle érintőket úgy, hogy

 

R 1 =3 * ( P 2 -P 1 )

R 4 =3 * ( P 4 - P 3 )

(3.29)

legyen! Ekkor a fenti (3.29) egyenlet felírhatjuk az alábbi formában is:

 

(3.30)

azaz

 

(3.31)

ezért a (3.31) egyenlet jobb oldalán a mátrixot – ami áttér az Hermite tartópontokról a Bezier tartópontokra – nevezzük -nek! A (3.19) egyenlet jelöléseivel az Hermite görbére

 

(3.32)

Ezt viszont átírva (3.31) alapján

 

(3.33)

azaz

 

(3.34)

(3.33) és (3.34) egyenletek összevetéséből és a megfelelő mátrixok behelyettesítésével (3.26) és (3.31) egyenletekből

 

(3.35)

A Bezier-görbe súlyfüggvényei tehát

 

(3.36)

amelyek éppen a

 

(3.37)

binom kifejezés egyszerűsítés nélküli hatványozásából adódó tagok. Vegyük észre azonban, hogy a (3.37) egyenletben szereplő binom azonosan 1, azaz a súlyfüggvények összege 1!

 

(3.38)

A Bezier-görbe tehát mindenhol a Pi pontok által kifeszített térbeli (!) négyszögön belül halad, mint ahogyan azt a (3.11) ábra síkbeli esete is mutatja.

Ha a binom modellt tekintjük, akkor a Bezier-görbe a lineáris szakasz általánosítása ((1-t)+t) binom tagjai a súlyfüggvények. Ha harmadfok fölé megyünk, akkor azt mondhatjuk, hogy az

 

(3.39)

kifejtés tagjait tekintjük, amelyek a binom kifejtési szabályai szerint

 

(3.40)

Tehát az n-ed fokú Bezier-görbe súlyfüggvényei éppen az n-ed fokú Bernstein-polinomok [3.3.]. Természetesen a magasabb-fokú Bezier-szakaszt több tartóponttal jellemezhetjük.Az eddigiekben kizárólag egyszerű görbeszakaszokat vizsgáltunk. Kérdés, mit tegyünk, ha több ponton keresztül szeretnénk görbét fektetni?

Természetes spline

A spline-on polinom görbékből összeállított térgörbe. Térbeli pontok sorozatára fektetett egyenes szakaszok elsőfokú spline-t definiálnak. Az n-edfokú spline-ban legfeljebb n-edfokú polinomszakaszok csatlakoznak egymáshoz úgy, hogy rendszerint nemcsak a folytonosságot, hanem az n-1-szeri differenciálhatóságot is megköveteljük.

3.12. ábra - Spline görbe

Spline görbe


A magasabb fokú spline-ok közül a legelterjedtebb a harmadfokú természetes spline, hogy miért arra később fény derül. Térbeli pontokon áthaladó térgörbére (3.12. ábra - Spline görbe) koordinátánként fektethetünk spline görbét. Legyen adott a 3.12. ábra - Spline görbe szerint m darab térbeli pont! Keressük azokat a függvényeket (k=1…m), melyek olyanok, hogy a függvény a Pk-1 és Pk pontok között halad, és a görbe belső pontjaiban kétszer folytonosan differenciálható módon csatlakoznak egymáshoz.

Csak az x-koordinátára írjuk fel a közelítést, természetesen hasonlóan felírható y- és z-koordinátákra is. Adottak tehát a

 

(3.41)

pontok, ahol , és . Keressük azokat a

 

(3.42)

függvényeket, melyek teljesítik az alábbi interpolációs feltételeket

 

(3.43)

és

 

(3.44)

Azaz az összes görbe átmegy az őt megelőző indexű ponton, és az utolsó görbe az utolsó pontba fut. Illesztési feltételként megfogalmazható, hogy

 

(3.45)

Azaz a belső pontokban a görbeszakaszok folytonosan csatlakoznak egymáshoz. Ugyanezen pontokban előírhatjuk a t szerinti deriváltak folytonosságát is,

 

(3.46)

illetve a t szerinti második deriváltak folytonosan csatlakoznak egymáshoz.

 

(3.47)

(3.43)-(3.47) egyenletek száma m+1+3*(m-1), amiből az m darab görbe 4*m ismeretlen paraméterét szeretnénk meghatározni, ezért két további peremegyenletet is hozzáveszünk egyenleteinkhez.

 

(3.48)

 

(3.49)

azaz a görbe a két szélen 0 görbülettel távozik.

A görbe meghatározásának első lépéseként nevezzük gk ismeretlen változónak a görbületeket az illesztési pontokban!

 

(3.50)

és

 

(3.51)

Mivel harmadfokú görbéket keresünk, ezek második deriváltja lineáris

 

(3.52)

Ezeket kétszer integrálva, és az integrálási állandókat az illesztési feltételekből az alábbi ún. Clapeyron-egyenlet adódik [3.4.].

 

(3.53)

Ugyanezt a Clapeyron-egyenletrendszert ismerjük a mechanikából a koncentrált erőkkel terhelt többtámaszú tartók esetéből. Igazából nem meglepő az azonosság, hiszen a koncentrált erőkkel terhelt többtámaszú tartó nyomatéki ábrája szakaszonként lineáris (mint a görbület a spline-oknál). És erre megoldva a rugalmas szál differenciálegyenletét

 

(3.54)

ugyanazt a kétszeri integrálást kell végrehajtanunk, mint a spline-ok esetén. Egyébként a spline szó is innen származik a rugalmas acélszál görbevonalzót használták az angolok a hajótervezésben, és ennek a neve volt a spline.

Érdekes az alábbi Holliday nevéhez köthető tétel [3.4.].

Tétel: Legyen az adott [t0, tm] intervallumon tii=0…m nem egybeeső monoton növő pontsorozat értelmezve! Az összes a kérdéses intervallumon kétszer folytonosan differenciálható, és a peremeken az peremfeltételt kielégítő pontok közül a pontokon átmenő harmadfokú spline függvény esetén minimális az

 

(3.55)

integrál.

A (3.55) integrál a második t-derivált négyzetét, a görbület négyzetével rokon adatot integrál. Azt mondhatjuk tehát, hogy az összes ilyen, a pontokon átmenő, a feltételeket teljesítő függvény közül a természetes spline „tekereg” a legkevésbé [3.5.].

Az a probléma a természetes spline-nal, hogy meg kell oldanunk egy a tartópontok számánál kettővel kisebb ismeretlent tartalmazó lineáris egyenletrendszert (3.53), ami akkor is időigényes, ha az együtthatómátrix ritka. Tetézi a bajt, hogy a spline sajátossága az is, ha bármelyik tartópont elmozdul, akkor a teljes görbe megváltozik, azaz az így megadott görbe csak lokálisan nem módosítható. Kérdés, mit kell egyszerűsítenünk az interpolációs közelítésen ahhoz, hogy lokálisan módosítható, kis számításigényű görbét kapjunk.

Catmull-Rom görbék, a kardinális spline

Ha pontok sorozatára úgy fektetünk interpolációs görbét, hogy a görbe átmegy a pontokon, és minden pontban a görbe érintője arányos a két szomszédos pont által meghatározott vektorral, akkor ezt a görbét kardinális spline-nak nevezzük. Ha a görbe idő szerinti paraméteres leírását tekintjük, akkor azt mondhatjuk, hogy a tk. időpontban a görbe éppen a Pk ponton halad keresztül (3.13. ábra - A kardinális spline). A görbe érintője a tk. időpontban Vk, akkor az érintőt a (3.56) egyenlet határozza meg.

 

(3.56)

ahol f(<1) a görbe feszítése. Ha f=0, akkor az éppen a Catmull-Rom spline [3.6.].

3.13. ábra - A kardinális spline

A kardinális spline


Ha a kardinális spline súlyfüggvényeit szeretnénk kiszámítani, ugyanúgy kell eljárnunk el, mint ahogy a Bezier-súlyfüggvények meghatározásánál tettük. Legyenek a Pi és a Pi+1 pontok körötti görbeszakasz Hermite geometriai adatai a P1, P4,R1 és R4 vektorok (az ábrán pirossal), melyek a (3.57) alapján megadhatók, mint Pi-1, Pi, Pi+1 és Pi+2 pontok függvényei

 

(3.57)

A (3.57) egyenletben látható mátrix éppen az Hermite-görbéről a kardinális görbére áttérő transzformáció.

 

(3.58)

Elvégezve a kijelölt mátrixszorzást

 

(3.59)

A kardinális spline paraméteres leírását a (3.60) egyenletek tartalmazzák.

 

(3.60)

Szokás a szélen az egyoldalas differeciával számítani az érintőt, és ilyenkor a görbe minden ponton átmegy. A kardinális spline-ok használatának előnye az, hogy nincs szükség egyenletrendszer megoldására, a görbe minden ponton átmegy. Hátránya az, hogy csak egyszer deriválhatók folytonosan.

B-spline-ok

Amennyiben ragaszkodunk a kétszer folytonosan differenciálható spline görbékhez, akkor azt a megkötést kell feladnunk, amely megköveteli, hogy a görbe menjen át a tartópontokon. Definiáljuk először a B-spline fogalmát! Adott fokszámú, adott simaságú, egymáshoz kapcsolódó spline görbeszakaszok egyértelműen leírhatók B-spline függvények lineáris kombinációjaként. Ez azt jelenti, hogy a B-spline-ok a spline függvények bázisaként fogható fel.

Definíció: Legyen adott m+1 darab időpont nem csökkenő sorozata!

 

(3.61)

n. fokú B-spline bázisfüggvényeknek nevezzük azt az m-n darab görbét, melyek az alábbi Cox-de Boor rekurzióval definiálhatók:

 

(3.62)

Mivel az időpontok között megengedtük az egyenlőséget, ezért előfordulhat, hogy a kijelölt művelet nem értelmezhető. Ezért kikötjük, hogy a 0/0 osztás 0-t ad eredményül.

Definíció: Legyenek adottak a P0, P1, … Pm pontok a térben és m+1 darab paraméterérték . A tartópontok által meghatározott, [t0,tm] paramétertartományon értelmezett n. fokú B-spline görbének nevezzük a (3.62) bázisfüggvényeivel definiált

 

(3.63)

görbét.

A B-spline definíciója alapján az adott tartópontok közül n+1 határoz meg egy n.-ed fokú B-spline görbeszakaszt. A Qi görbeszakaszok előállíthatók, mint a bj,n Cox de Boor rekurzióval meghatározott bázis B-spline-ok – mint súlyfüggvények – lineáris kombinációjával.

 

(3.64)

Szokás még a B-Spline görbéket azért is előnyben részesíteni, mert invariánasak az affin transzformációra. Ez más szavakkal azt jelenti, hogy ha a van egy B-spline-okkal közelített térgörbém, és azt leképezem egy síkra, akkor nem szükséges a görbe „összes” pontját síkba vetíteni, hanem elegendő csak a tartópontokat vetíteni és a síkban meghatározni a görbét [3.7.].

A B-spline görbék általános vizsgálata helyett tekintsük a harmadfokú görbék esetét!

Harmadfokú B-Spline görbék

A „Természetes spline” fejezetben láttuk, hogy a harmadfokú görbék kiemelt fontossággal bírnak.

A harmadfokú bázisgörbék jellege

Vizsgáljuk meg először az általánosan elterjedt harmadfokú B-spline-okat! A (3.14. ábra - A B-spline súlyfüggvények) ábrán világoskékkel a bj,1 tag, sötétkékkel a bj,2 tag, zölddel a bj,3 és végül pirossal a bj,4 tag(ok) láthatók.

3.14. ábra - A B-spline súlyfüggvények

A B-spline súlyfüggvények


Ha egyenközű B-spline görbéket használunk, a bázisfüggvények is egyszerűsödnek. Legyen t0=-3, t1=-2, t2=-1 és t3=0 és t4=1! Ekkor a bázisfüggvények könnyen számíthatók:

 

(3.65)

Közelítés harmadfokú B-spline görbével

A B-spline (3.66) képlete szerint a harmadfokú Qi görbeszakaszok előállíthatók, a bj,3 Cox de Boor rekurzióval meghatározott bázis B-spline-ok – mint súlyfüggvények – lineáris kombinációjával.

 

(3.66)

Ha (3.66) képletet n=3 értékre (harmadfokú B-Spline-okra) alkalmazzuk, és használjuk a t=t-ti helyettesítést, akkor a súlyfüggvények egy szakaszon olyanok lesznek, mint amit a 3.14. ábra - A B-spline súlyfüggvények [t3,t4] szakaszán láthatunk, illetve ha kiszámítjuk a súlyfüggvényeket, akkor a

 

(3.67)

kifejezéshez jutunk, azaz írhatjuk, hogy

 

(3.68)

ahol

 

(3.69)

és

 

(3.70)

Ha kiszámítjuk a (3.67) súlyfüggvények összegét, akkor

 

(3.71)

ugyanúgy, mint a Bezier splineoknál. Ez azt jelenti, hogy a B-Spline szakasz is benne halad a tartópontok által meghatározott térbeli négyszögben (3.15. ábra - A B-spline szakaszok a befoglaló téglalapban).

3.15. ábra - A B-spline szakaszok a befoglaló téglalapban

A B-spline szakaszok a befoglaló téglalapban


Vizsgáljuk meg a harmadfokú B-spline folytonossági viszonyait! Az i. ponthoz tartozó görbe

 

(3.72)

alakban írható. Ebből csak az x-koordinátákra felírva a csatlakozó görbék adatait (y, és z ugyanígy alakul):

 

(3.73)

tehát a görbe folytonos. Hasonlóan a deriváltakra azt kapjuk, hogy

 

(3.74)

tehát a görbe folytonosan differenciálható. A második deriváltak is egyenlők lesznek

 

(3.75)

A B-spline görbéket tehát tartópontjaikkal irányíthatjuk és a görbe kétszer folytonosan differenciálható módon követi a pontok helyzetét, de nem megy át rajtuk. Kérdés, hogy mi történik akkor, amikor két szomszédos pont egybeesik. A (3.71) egyenlet szerint a súlyfüggvények összege azonosan egy, tehát a görbeszakasz benne halad a befoglaló négyszögben (3.16. ábra - Elfajuló B-spline szakaszok ábra bal oldala). Ha két szomszédos tartópont egybeesik, akkor a befoglaló négyszög háromszöggé torzul. A görbe benne halad a háromszögben, és a két egybeeső pont nagyobb „súlyával” közelebb „húzza” magához a görbét (3.16. ábra - Elfajuló B-spline szakaszok középső ábra). Végül, ha a három szomszédos pont esik egybe, akkor a befoglaló négyszögek egyenes szakaszokká torzulnak, és a B-spline is két csatlakozó egyenes szakasszá torzul (3.16. ábra - Elfajuló B-spline szakaszok ábra jobb oldala).

3.16. ábra - Elfajuló B-spline szakaszok

Elfajuló B-spline szakaszok


Ha (3.67) alapján felírjuk az egyenes szakaszokra torzult első B-spline-t, akkor adódik, hogy

 

(3.76)

Ami valóban egy egyenes paraméteres egyenlete, azonban (3.10)-zel ellentétben a paraméterfüggvények nem lineárisak. Ez is egy példa arra, hogy a kétszer folytonosan differenciálható függvény geometriailag nem folytonos.

Közelítés harmadfokú nem egyenközű B-Spline görbékkel

Ha a (3.62) Cox de Boor rekurziót harmadfokú függvényre írjuk fel, akkor képleteink a (3.77) szerint alakulnak.

 

(3.77)

Ha kiszámítjuk a t0=t1=t2=t3=0, t4=t5=t6=t7=1 időosztásra a B-spline együtthatókat,

 

 

 

 

 

 

 

 

 

 

akkor b0,3(t), b1,3(t), b2,3(t) és b3,3(t) éppen a Bezier súlyfüggvények.

Interpoláció B-Spline görbékkel

A természetes spline görbének azt az előnyét elvesztettük, hogy átmegy a megadott pontokon. Szerencsére nem végleg. Az egyenletrendszer megoldását azonban nem spórolhatjuk meg. A B-spline görbékkel való interpoláció alapgondolata az, hogy ha adottak a pontok, amelyeken a B-spline görbének át kell mennie, akkor keressünk olyan tartópontokat és a hozzájuk tartozó csomópontértékeket úgy, hogy a görbe áthaladjon pontjainkon. A probléma az, hogy végtelen sok megoldás létezik.

Tegyük fel, hogy adott m+1 darab térbeli pontunk Qii=0,1,…m! Ha ismerjük a Qi pontokhoz tartozó B-spline paraméterpontokat, akkor (3.63)-nak megfelelően felírhatjuk az n.-edfokú B-spline képletét az összes m+1 pontra. Ekkor az

 

(3.78)

3*(m+1) egyenletrendszer adódik, melynek 3*(m+1) ismeretlenje a Pi pontok koordinátái [3.8.].

A probléma, hogyan vegyük fel a paraméterpontokat. Erre több módszer is kínálkozik.

Egyenletes időosztás

A legegyszerűbb az egyenletes időosztás, amikor

 

(3.79)

Természetesen, hogy ez mennyire lesz hullámos, az függ a pontok elhelyezkedésétől. Ezt a módszert ritkán használják.

Osztás poligonkerület ívhossza szerint

Legyen a megadott pontokat egyenes szakaszokkal összekötő poligon ívhossza

 

(3.80)

A köztes tartópontokat a tartóponthoz vezető poligonkerület és teljes poligonkerület hányadosa határozza meg.

 

(3.81)

Az ívhossz módszer általában jól működik. Ha hosszú poligonélet használunk, az hullámzási problémát okozhat.

Centripetális módszer

Legyen egy a>0 érték! A megadott pontokat egyenes szakaszokkal összekötő poligon éleivel számítsuk ki az

 

(3.82)

értéket, és ezzel a paraméterosztás legyen

 

(3.83)

Ha a=0.5, akkor ez egy közelítése a kanyarban való haladáshoz szükséges centripetális erőnek. Az a=1 érték az ívhossz-módszerhez vezet.

Racionális, nem egyenközű B-spline (Non-Uniform Rational B-Spline - NURBS)

Az eddig megismert görbeközelítési módszerek mindegyike polinommal közelítette a koordináta-függvényeket. Ha áttérünk homogén koordinátás ábrázolásra, akkor minden pont helyett az homogén koordinátákkal definiált pontot használjuk (lásd „Koordináta-rendszerek” fejezet). Ez azt jelenti, hogy paraméteres megadáskor az

 

(3.84)

egyenleteket használhatjuk, ahol a w(t) minden egyes megadott paraméterpontban 1. Azaz . Ekkor az a pontkoordináták

 

(3.85)

ami azt jelenti, hogy racionális törtfüggvényekkel írtuk le a görbét.

Szabadformájú felületek

A görbékhez hasonlóan a felületeket is függvényekkel közelítjük

Felületek leírása háromszöghálókkal

Háromszöget definiálhatunk a háromszög csúcspontjaival r1, r2 és r3. Ekkor a háromszög belső pontjai leírhatók u, v koordinátákkal úgy, hogy a sarokpontok koordinátáinak súlyozott összegét számítjuk, úgy hogy a súlyok összege 1 legyen.

 

(3.86)

Ha egy felületet szeretnénk ábrázolni, akkor lehetőségünk van a háromszögek csúcspontjait összegyűjteni egy koordinátákat tartalmazó tömbben (3.87).

 

(3.87)

A felület geometriájának leírása ezek után egy olyan tömbben történhet, amely a háromszögek csúcspontjait (i,j,k) úgy tartalmazza, hogy egy háromszöghöz három, a csúcspontok tömbjére mutató indexet tartalmaz, melynek alapján a háromszög csúcspontjainak koordinátái kereshetők.

 

(3.88)

Ha megvilágítottan és árnyalva szeretnénk megjeleníteni a felületet, akkor szükségünk van a felület normálvektorára. A háromszög három pontja meghatározza a sík normálvektorát. Azonban így egyik háromszögről a másikra áthaladva a normálvektor nem folytonosan változik, ezért az élek kiemelődnek. Elkerülhetjük ezt a jelenséget, ha minden ponthoz egy normálvektort is tárolunk (3.89).

 

(3.89)

A háromszögön a konstans normálvektor helyett (3.86)-nak megfelelő, folytonosan változó normálvektort használunk.

Lehetőség van arra is, hogy anyagok tömbjét is mentsük, és minden háromszöghöz egy anyagot rendeljünk, illetve, hogy ugyanígy mintázatot is rögzítsünk a felületre.

Spline felületek

A Q(t) térgörbék leírásánál (3.19) használtuk a geometriát jellemző mátrixot, a közelítés bázismátrixát és a paramétervektort .

Harmadfokú Hermite-felületfolt

Próbáljunk egy felületet leírni úgy, hogy a Q(t) Hermite típusú térgörbét egy másik, független s paraméter mentén változtatjuk. Ekkor Q(s, t) kétparaméteres felület leírását kapjuk. Tegyük ezt úgy, hogy a geometriát jellemző mátrix vektorait s-től függővé tesszük.

 

(3.90)

A geometriát jellemző mátrix oszlopai térbeli vektorok. Ezek a vektorok előállíthatók hasonló módon, mint a görbék (3.19)-hez hasonló módon.

 

(3.91)

azaz

 

(3.92)

ebben a vektorok helyett csak azok x koordinátáit használva

 

(3.93)

(3.93)-t (3.92)-be helyettesítve

 

(3.94)

A Qy(s,t) és a Qz(s,t) görbék ugyanígy felírhatók.

Harmadfokú Bezier-felületfolt

A görbékhez hasonlóan, ha át kívánunk térni egyik ábrázolási módról a másikra, akkor nincs más dolgunk, mint a bázismátrixot szorozni az egyik bázisról a másikra való áttérés mátrixával. Így a Bezier-féle felületfolt Qx(s,t) leírása adódik. Az Hermite-féle bázismátrixot az x, koordinátákra -el jelölve (, és hasonlóan felírható) adódik a Bezier-felületfolt egyenlete (3.95).

 

(3.95)

azaz

 

(3.96)

A 3.17. ábra - Bezier féle felületfolt a felületfolt , , Bezier féle geometriát jellemző mátrixok koordinátáiból alkotott tartópontok láűthatók.

3.17. ábra - Bezier féle felületfolt

Bezier féle felületfolt


Felületfoltok illesztése

Ha két felületfoltot szeretnénk a 3.18. ábra - Felületfoltok illesztése szerint egy peremen G1 folytonosan illeszteni, akkor az A felületfolt mindegyik koordinátára vonatkozó geometriai mátrix s=1 paramétert leíró elemei (a mátrix második sora) megegyeznek a B felületfolt s=0 paraméterű élet meghatározó elemeivel (a mátrix első sora). Ez biztosítja a C1 folytonosságot. Hasonlóan a G1 folytonossághoz a B felületfolt s=0 élén a t irányú parciális deriváltak (a mátrix harmadik sora) megegyeznek az A felületfolt s=1 paraméterű élén számított t irányú deriváltak (a mátrix negyedik sora) konstanszorosával (3.18. ábra - Felületfoltok illesztése).

3.18. ábra - Felületfoltok illesztése

Felületfoltok illesztése


 

(3.97)

Harmadfokú B-spline felületek

k*n-edfokú B-spline felületnek nevezzük a tartópontok s sora és o oszlopa által meghatározott függvényt.

 

(3.98)

Testek

Testnek nevezzük a háromdimenziós tér olyan részhalmazait, amelyeknek nincsen elfajuló alacsonyabb dimenziós része (például egy síkidom) [3.6.]. Kérdés, hogyan írhatjuk le a testek geometriáját? Erre többféle lehetőségünk is van. Hozzáállhatunk a probléma megoldásához úgy, hogy egyszerű résztestekből építkezünk – leírjuk a test határait, vagy megadjuk, hol vannak a térben a testnek pontjai.

CSG modellek

A legrégebb módszer még a számítógépes grafika hőskorából származik. A CSG (Constructive Solid Geometry) elv alapgondolata, hogy vannak paraméterezhető alapgeometriáink, mint a tégla, a gömb, a (csonka)gúla, a (csonka)kúp stb. Ezeket elhelyezzük a valós tér modelljében, és ezek között logikai műveleteket végzünk (unió, metszet és különbség). A 3.19. ábra - CSG modellezés egy „fenyőfatalp” modellezését mutatja be. Két tégla uniója a kereszt, amiből egy henger kivonása modellezi a furatot.

3.19. ábra - CSG modellezés

CSG modellezés


A CSG modellezés ma is része minden CAD rendszer felhasználói felületének, még akkor is, ha már nem így modelleznek a tervező programok.

B-Rep testábrázolás

A B-Rep szó a Boundary Representation angol kifejezés rövidítése, határábrázolást jelent. Azt takarja a fogalom, hogy egy testet ábrázolhatunk felületeivel és a felületek test felé mutató normálisaival. A topológiai leírás nehezebb, de könnyen készíthető szabálytalan geometriájú, szabadformájú felületek által határolt test. A modern CAD rendszerek alkalmazzák ezt a technikát

Térfogati modellek

A térfogati modell a tér pontjaihoz hozzárendelt sűrűségfüggvény [3.6.]. Ezt alkalmazzák a méréseknél, a CT- és MRI felvételeknél. Ábrázolása rácsban (térbeli lépcsősfüggvény) történik. Ez a bitkép raszteres modelljének 3D általánosítása. A térbeli raszterpontot voxel-nek nevezzük.