Předchozí home.gif (1235 bytes) right.gif (1395 bytes)


12. Použití křivek ve 3D

Křivky, popsané v předchozích kapitolách, se díky svým vlastnostem hojně využívají ve 3D a to především při generování povrchů (je to způsobeno tím, že křivky a povrchy jsou si v jistých směrech podobné).

Tato kapitola nepopisuje detailní konstrukce 3D těles a jejich zobrazování, avšak má pouze ukázat jak lze některé z uvedených křivek využít ke konstrukci třírozměrných těles. Pro hlubší seznámení s problematikou zobrazování ve 3D tímto odkazuji čtenáře na literaturu tímto problémem se zabývající.

12.1 Operátory pro generování povrchů ze křivek

Existuje řada známých operací jako např. tažení (angl. extrusion), otáčení (angl. revolution) či vedení (angl. ruled) pro tvorbu povrchů. Pro tvorbu povrchů pomocí těchto operátorů se nejčastěji používá křivka NURBS, kterou se např. předdefinuje profil či obrys daného tělesa (2D) a z něj se pomocí operátorů vygeneruje 3D objekt.

12.1.1 Tažení

Povrchy těles, které se vytvářejí pomocí operátoru tažení jsou navrhovány tak, že se pomocí křivky nadefinuje profil (tzv. profilová křivka) a pak se pomocí operátorů tažení "táhne" tato křivka v určitém směru. Jestliže má profilová křivka tvar :

        ( 12.1 )

pak vzorec pro tažený povrch je :

        ( 12.2 )

Kde v (konstantní isoparametrická křivka) je původní profil a u (konstantní isoparametrická křivka) je úsečka definující směr tažení, zde je použita lineární NURBS křivka (t.j. R2(v)).

        Obr.12.1 Klíč vytvořený pomocí tažení

12.1.2 Otáčení

Povrchy vytvářené pomocí otáčení jsou generovány za využití křivky (např. NURBS), která leží v xz-rovině. Povrch je vygenerován tak, že se křivka otočí o 360O okolo osy z. Požadovaný povrch (Obr. 12.2) má tvar :

( 12.3 )

 

Obr. 12.2 Povrch vytvořený pomocí otáčení

Obr. 12.2 ukazuje model vytvořený pomocí otáčení profilu. Řídící síť se sestává z 9 rohových řídicích bodů a 9 středových bodů (na hranách). Dále pak každý z řídicích bodů je použit pro generování 9 řídicích bodů čtverce.

12.1.3 Vedené (řízené) povrchy (Přímkové plochy)

Povrchy vytvářené pomocí operátoru vedení (řízení) využívají toho, že každý bod, který koresponduje s daným parametrem t křivky, je propojen pomocí úsečky s jiným bodem na jiné křivce.

Takto se například vytvářejí povrchy mezi dvěmi křivkami NURBS :

  1. Zvýší se stupeň křivky, která je bližší pozorovateli na stupeň křivky vzdálenější.
  2. Sjednotí se uzlové vektory obou křivek.
  3. Křivky se osadí novým uzlovým vektorem a sjednotí tak, aby měly stejný počet řídicích bodů.
  4. Povrch se vytvoří za pomocí řídicích bodů a uzlových vektorů obou křivek. Tento postup je podobný jako postup při tvorbě povrchu operátorem tažení kdy každá křivka se stává řádkem hodnot v matici řídicích bodů.

Obr. 12.3 zobrazuje vedený povrch mezi půlkružnicí a polovinou čtverce. Tento vedený povrch byl vytvořen pomocí u = konstantních isoparametrických čar (přímé čáry) rovnoměrně rozmístěných okolo čtverce a nerovnoměrně okolo kružnice.

Obr. 12.3 Vedený povrch

12.2 Plochy určené polynomy

V předchozí kapitole byla zmíněna tvorba povrchů 3D těles za využití jedné (maximálně dvou) křivek a případného operátoru. Tato kapitola se zabývá generování ploch definovaných pomocí polynomů, které se používají pro vytváření 2D křivek. Následující text potvrzuje, že pomocí 2D křivek se dají jednoduše generovat 3D plochy.

12.2.1 Interpolační plochy

Mějme dáno (m + 1)(n + 1) opěrných bodů Pi,j, dále pak (m + 1) parametrů ui a (n + 1) parametrů vj. Opěrnými body Pi,j lze proložit síť P(u, v), kde P(ui, vj) = Pi,j pro i = 0 ,. . ., mj = 0,. . .,n.

Nejčastěji se používají plochy určené vektorovým polynomem

( 12.4 )

musí platit :

( 12.5 )

Obr. 12.4 Interpolační plocha určená 16-ti body

12.2.2 Bézierovy plochy

Bézierova plocha stupně (m, n) je definována vzorcem :

( 12.6 )

Kde Pi,j tvoří řídící síť Bézierovy plochy a Bim(u), Bjn(v) jsou Bernsteinovy polynomy. Výraz Bim(u)Bjn(v) tvoří Bernsteinovy polynomy dvou proměnných u,v stupně (m, n).

Pro tyto polynomy platí (podobné vlastnosti jako ve 2D) :

  1. Nezáporná hodnota : Bim(u)Bjn(v) >= 0 pro " i, j, m, n, u, v.
  1. Jednotkový součet pro (u, vÎ <0, 1>x<0, 1>

Platí-li: n = m = 3, pak Bézierovu plochu plochu nazýváme Bézierovým bikubickým plátem :

( 12.7 )

Bernsteinovy polynomy :

B0(t) = (1 - t)3
B1(t) = 3t(1 - t)2
B2(t) = 3t2(1 - t)
B3(t) = t3

( 12. 8 )

Obr. 12.5 Bézierův bikubický plát

12.2.3 De Casteljau algoritmus

Bod na Bézierově ploše lze vypočítat opakovaným použitím de Casteljau algoritmu, pak lze rovnici Bézierovy plochy zapsat ve tvaru :

        ( 12.9 )

kde : , j=0, . . ., n jsou Bézierovy křivky stupně n.

( 12.10 )

12.2.4 B-splajn plochy

B-splajn plocha stupně (k, 1) je určena :

( 12.11 )

Body Pi,j tvoří řídící síť B-splajn plochy Nik(u), Njl(v) jsou normalizované bázové funkce.

Parametrizace je dána uzlovými vektory :

U = (u0 = . . . = uk, uk+1, . . . , um, um+1 = . . . = um+k+1),

V = (v0 = . . . = vl, vl+1, . . . , vn, vn+1 = . . . = vn+l+1), kde u, v Î <0, 1>

Vztah Nik(u) Njl(v) reprezentuje B-splajn bázové funkce dvou proměnných stupně (k, l).

Vlastnosti bázových funkcí :

  1. Nezáporná hodnota : Nik(u) Njl(v) 3 0 pro všechny hodnoty : i, j, k, l, u, v.
  2. Jednotkový součet : pro (u, v) Î <0, 1>x<0, 1>.
  3. Lokální vlastnost : Nik(u) Njl(v) <> 0 pro (u, v) Î <ui, ui+k+1>x<vj, vj+l+1>

Obr. 12.6 B-splajn bázová plocha N22(u) N33(v)

Pro m = n = 3 pak B-splajn plochu nazýváme bikubickou B-spline plochu (někdy též Coonsův plát). Vzorec výpočtu tohoto plátu je určen :

( 12.12 )

a báze mají tvar :

B0(t) = (1 - t)3/6
B1(t) = (3t3 - 6t2 + 4)/6
B2(t) = (-3t3 + 3t2 + 3t + 1)/6
B3(t) = t3/6

( 12.13 )


NURBS Předchozí home.gif (1235 bytes) right.gif (1395 bytes) Návod na používání appletů