Parametrické plochy

Kurz počítačové grafiky

Autor: Jiří Hnídek / jiri.hnidek@tul.cz

Motivace aneb využití parametrických ploch

  • CAD/CAM aplikace
  • Grafický design

Bodová rovnice parametrických ploch

U plochy máme dva nezávislé parametry $ u,v \in <0, 1>$, které definují bodovou rovnici:

$$ Q(u,v) = [x(u,v), y(u,v), z(u,v)] $$

funkce $x(u,v), y(u,v), z(u,v)$ jsou většinou polynomiální.

Tečné vektory parametrických ploch

Každá parametrická plocha má definované dva tečné vektory:

$$ \begin{align} \vec{q}_{u}(u,v) &= \frac{\partial Q(u,v)}{\partial u} = \left( \frac{\partial x(u,v)}{\partial u}, \frac{\partial y(u,v)}{\partial u}, \frac{\partial z(u,v)}{\partial u} \right) \\ \vec{q}_{v}(u,v) &= \frac{\partial Q(u,v)}{\partial v} = \left( \frac{\partial x(u,v)}{\partial v}, \frac{\partial y(u,v)}{\partial v}, \frac{\partial z(u,v)}{\partial v} \right) \end{align} $$

Normálový vektor

Normálový vektor je následně určený:

$$ \vec{n} = \frac{\vec{q}_{u} \times \vec{q}_{v}}{\left| \vec{q}_{u} \times \vec{q}_{v} \right|} $$

Otázka: Je vždy normálový vektor definovaný pro každý bod parametrické plochy?

Odpověď: Nemusí tomu tak být vždy. Pokud jsou vektory $\vec{q}_{u}$, $\vec{q}_{v}$ v nějakém bodě plochy kolineární, tak zde není normálový vektor definován.

Hlavní křivky plochy

Hlavní křivkou plochy $Q(u, v)$ ve směru $u$ se rozumí, taková křivka, kde je parametr $v$ roven nějaké konstantě $k$, která může být rovna hodnotě v rozsahu $<0, 1>$.

Analogicky je definovaná hlavní křivka plochy $Q(u,v)$ ve směru $v$.

Pláty neboli patche

Stejně jako je výhodné navazovat kubiky, tak je výhodné vytvářet výslednou plochu z jednoduchých plátů neboli patchů. Při navazování plátů je důležitá jejich spojitost.

Navazování a spojitost plátů

U ploch je podobně jako u křivek definovan parametrická (C) a geometrická (G) spojitost.

Plochy musí mít společnou stranu, která je minimálně křivkou třídy $C^{0}$.

Obecně lze říci, že spojité navazování parametrických ploch je problematické, protože pri interaktivním návrhu plochy trpí ztuhlostí.

Interpolační a aproximační plochy

Interpolarční plochy se téměř nepoužívají, protože interolace v dimenzích vyšších než dvě je komplikovaná.

Nejčastěji se používají aproximační plochy, kdy bázové funkce jsou polynomy stupně tři. Tím se rozumí, že hlavní křivky jsou kubiky.

Bikubické plochy

Teoreticky můžeme vytvořit plochu, kde hlavní křivky v jednom směru jsou úsečky a druhém směru polynomiální křivky.

Nejčastěji se ovšem používají plochy, kde hlavní křivky jsou polynomiální křivky stupně tři (kubiky).

Obecné vyjádření bikubické plochy

Podobně jako u parametrických křivek se nepožívá vyjádření pomocí koeficientů jednotlivých polynomů, ale požívá se maticové vyjádření:

$$ Q(u,v) = U M_{B} P M_{B}^{T} V^{T} = \begin{bmatrix} u^{3} & u^{2} & u & 1 \end{bmatrix} M_{B} P M_{B}^{T} \begin{bmatrix} v^{3} \\ v^{2} \\ v \\ 1 \end{bmatrix} $$

$M_{B}$ je bázová matice a $P$ je vektor řídících bodů/vektorů

Bézierovy plochy

Hodně rozšířené parametrické plochy.

Používají pouze řídící body a procházejí některými řídícími body.

Obecná Bézierova plocha

$$ Q(u,v) = \sum_{i=0}^{n} \sum_{j=0}^{m} P_{i,j} B_{i}^{n}(u) B_{j}^{m}(v) $$

Je dána $(n + 1).(m + 1)$ řídícími body $P_{i,j}$ a Bernstainovými polynomy: $B_{i}^{n}$ $B_{j}^{m}$

Vlastnosti Bézierových ploch

  • Strany Bézierovy plochy jsou Bézierovy křivky.
  • Plocha leží uvnitř konvexní obálky řídících bodů.
  • Změnou jednoho řídícího bodu dojde ke změně celé plochy. Proto se používá navazování plátů nízkého řádu (nejčastěji bikubické Bézierovy pláty)
  • Plocha prochází krajními řídícími body:
$$ \begin{align} P_{0,0} &= Q(0,0), P_{0,m} = Q(0,1) \\ P_{n,0} &= Q(1,0), P_{n,m} = Q(1,1) \\ \end{align} $$

Navazování Bézierových plátů

  • Máme-li dva Bézierovy pláty: $Q^{(1)}(u,v)$ s řídícími body: $P^{(1)}_{i,j}, i=0, \dots ,s; j=0, \dots, m$ a $Q^{(2)}(u,v)$ s řídícími body: $P^{(2)}_{i,j}, i=0, \dots ,t; j=0, \dots, m$
  • Ve směru kolmém na směr navazování musí mít oba pláty stejný stupeň, aby bylo možné vždy zaručit spojitost alespoň $C^{0}$
  • Pokud navazujeme dva pláty ve směru $u$, tak musí platit rovnost: $Q^{(1)}(1,v) = Q^{(2)}(0, v)$
  • Tudíž musí platit i: $P^{(1)}_{s,0} = P^{(2)}_{0,0}, \dots, P^{(1)}_{s,m} = P^{(2)}_{0,m}$

Spojité navázání Bézierových plátů

  • Při spojitém navázání plátů nám nestačí rovnost společných hran.
  • Musí být spojité i hlavní křivky ve směru návázání.
  • Pokud jsou všechny hlavní křivky ve směru navázání $C^{1}$ spojité, tak i oba pláty jsou $C^{1}$ spojité.
  • Stejné pravidlo platí pro geometrickou spojitost.

Bézierovy bikubické plochy

$$ Q(u,v) = \sum_{i=0}^{3} \sum_{j=0}^{3} P_{i,j} B_{i}^{3}(u) B_{j}^{3}(v) $$

Bikubická ploch je dána pouze 16-ti řídícími body. Maticový zápis:

$$ Q(u,v) = U M_{B} P M_{B}^{T} V^{T} $$

pak můžeme rozepsat do tvaru:

$$ \begin{align} Q(u,v) = & \begin{bmatrix} u^{3} & u^{2} & u & 1 \\ \end{bmatrix} \begin{bmatrix} -1 & 3 & -3 & 1 \\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ \end{bmatrix} \\ & \begin{bmatrix} P_{0,0} & P_{0,1} & P_{0,2} & P_{0,3} \\ P_{1,0} & P_{1,1} & P_{1,2} & P_{1,3} \\ P_{2,0} & P_{2,1} & P_{2,2} & P_{2,3} \\ P_{3,0} & P_{3,1} & P_{3,2} & P_{3,3} \\ \end{bmatrix} \begin{bmatrix} -1 & 3 & -3 & 1 \\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} v^{3} \\ v^{2} \\ v \\ 1 \\ \end{bmatrix} \end{align} $$

B-spline plochy

  • Parametrické plochy, kde hlavní křivky v obou směrech u a v jsou B-Spline křivky.
  • Navazují se snadněji než Bézierovy plochy
  • B-spline plocha n-tého stupně zaručuje spojitost $C^{n-1}$ bez nutnosti zadávat geometrických podmínek na řídíci body.
  • B-spline pláty

Další vlastnosti B-spline ploch

  • Plocha leží v konvexní obálce řídích bodů
  • Změn polohy řídícího bodu ovlivňuje pouze okolní povrh
  • Násobnost bodů: plocha pak prochází danými řídícím body
  • Plocha je invariantní k lineárním transformacím.

Bikubické B-spline plochy

Bikubická B-spline plocha je dána předpisem:

$$ Q(u, v) = \sum_{i=0}^{3}\sum_{j=0}^{3}P_{i,j}B_{i}(u)B_{j}(v) $$

kde $B_{i}$ a $B_{j}$ jsou bázové funkce.

NURBs plochy

NURBs plochy jsou zobecněním B-spline ploch, kde body na povrchu jsou vyjádřeny pomocí:

$$ Q(u, v) = \frac{\sum_{i=0}^{n}\sum_{j=0}^{m} w_{i,j} P_{i,j} N_{i,p}(u) N_{j,q}(v)} {\sum_{i=0}{n}\sum_{j=0}^{m} w_{i,j} N_{i,p}(u) N_{j,q}(v)} $$

kde $w_{i,j}$ je váha řídícího bodu $P_{i,j}$. $p$ a $q$ jsou stupně polynomů a $N_{i,p}(u), N_{i,q}(v)$ jsou normalizované B-spline bázové funkce

Normalizované bázové funkce

Jsou definované následujícím rekurentním vztahem:

$$ N_{i,1} = \begin{cases} 1; &\quad t_{i} \leq t \le t_{i+1} \\ 0; &\quad \text{otherwise} \end{cases} $$ $$ N_{i,k} = \frac{t - t_{i}}{t_{i+k-1} - t_{i}}N_{i,k-1}(t) + \frac{t_{i+k} - t}{t_{i+k} - t_{i+1}}N_{i+1,k-1}(t) $$

Předchozí vztah platí pro:

$$ t_{i} \le t_{i+1+k}; 0 \leq i \leq n $$

Pokud se ve jmenovateli vyskytuje nula, tak výsledná hodnota je v tomto případě rovna nule.

Parametrické plochy a web

Je nutná podpora knihoven třetích stran

http://verbnurbs.com/

Děkuji za pozornost