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.