Podręcznik
7. Powierzchnie B-sklejane i powierzchnie NURBS
Powierzchnie B-sklejane definiuje się jako tzw. iloczyn tensorowy krzywych B-sklejanych stopnia k względem parametru u i stopnia r względem parametru v:
\(P\left(u,v\right)=\sum_{i=0}^{m}\sum_{j=0}^{n}{\mathbf{D}_{\mathbf{ij}}\cdot N_{i,k}\left(u\right)\cdot N_{j,r}\left(v\right)\ \ \ ;\ \ \ \left\{\begin{matrix}u_k\le u\le u_{m+1}\\v_r\le v\le v_{n+1}\\\end{matrix}\right.}\)
Powierzchnię definiują wierzchołki kontrolne tworzące siatkę ( m+1)*( n+1) punktów:
\(\mathbf{D}_{\mathbf{ij}}\ \ \ \ ;\ \ \ \ \ \ i=0,\ldots,\ m\ \ \ \ ;\ \ \ \ \ \ j=0,\ldots,n\)
oraz dwa ciągi węzłów - dla każdego parametru osobne:
\(\left(u_1,u_2,\ldots,u_{m+k}\right)\ ;\ \ \ \ \ \ \ \ \ \ u_i\le\ u_{i+1}\)
\(\left(v_1,v_2,\ldots,v_{n+r}\right)\ ;\ \ \ \ \ \ \ \ \ \ \ \ v_i\le v_{i+1}\)
Powierzchnia tak zdefiniowana składa się z (m-k+1)*(n-r+1) płatów. Przykład dla k=3 i r=3 (czyli dla tzw. powierzchni bikubicznej) podano poniżej:
Rysunek 77. Zasada definiowania bikubicznej powierzchni B-sklejanej. Liczba płatów wynika z liczby wierszy i kolumn siatki (tutaj: 6*5) oraz stopnia powierzchni w każdym z kierunków (tutaj: 3*3).
Do wyznaczania punktów powierzchni stosuje się w ogólnym przypadku szybki i stabilny algorytm de Boora, albo też, dla powierzchni stopnia 2 lub 3, geometryczny algorytm Boehma będący uogólnieniem algorytmu dla krzywych:
- Najpierw stosuje się algorytm Boehma w stosunku do każdej kolumny siatki
- Następnie ten sam algorytm stosuje się do każdego wiersza tak otrzymanej pośredniej macierzy wierzchołków.
Rysunek 78. Zasada wyznaczania wierzchołków Béziera na podstawie siatki wierzchołków B-sklejanych (zwanych też wierzchołkami de Boora).
Powierzchnie NURBS definiuje się za pomocą siatki wierzchołków kontrolnych
\(\mathbf{D}_{\mathbf{ij}}\ \ \ ;\ \ \ \ \ i=0,\ldots,m\ \ \ \ ;\ \ \ \ j=0,\ldots,n\)
związanych z nimi współczynników wagowych:
\(w_{ij}>0\ \ ;\ \ \ \ i=0,\ldots,m\ \ \ ;\ \ \ j=0,\ldots,n\)
i dwu niezależnych ciągów węzłów:
\(\left(u_1,u_2,\ldots,u_{m+k}\right)\ \ \ \ \ ;\ \ \ \ \ \ u_i\le\ u_{i+1}\)
\(\left(v_1,v_2,\ldots,v_{n+r}\right)\ \ \ \ \ \ \ ;\ \ \ \ \ \ v_i\le v_{i+1}\)
Pełna definicja ma postać analogiczną do wymiernych krzywych B-sklejanych:
\({\mathbf{P}}\left(u,v\right)=\frac{\sum_{i=0}^{m}\sum_{j=0}^{n}{w_{ij}\mathbf{D}_{\mathbf{ij}}N_{i,k}(u)\cdot N_{j,r}(v)}}{\sum_{i=0}^{m}\sum_{j=0}^{n}{w_{ij}N_{i,k}(u)\cdot N_{j,r}(v)}}\ \ ;\ \ \ \ \ \ \left\{\begin{matrix}u_k\le u\le u_{m+1}\\v_r\le v\le v_{n+1}\\\end{matrix}\right.\)
Własności powierzchni NURBS prezentuje rozbudowana Aplikacja nr 12 (Rysunek 79).
Rysunek 79 – Aplikacja nr 12: Powierzchnie NURBS. Aplet umożliwia stworzenie i modelowanie powierzchni NURBS. Po naciśnięciu przycisku "Nowy" w oknie dialogowym można ustalić wielkość siatki wierzchołków kontrolnych (tutaj: 5*6). W trybie edycji możliwa jest zmiana stopnia powierzchni w każdym w kierunku, edycja wag wierzchołków oraz edycja ciągu węzłów dla każdego z kierunków.