PótZH 2006. 12. 07., D csoport, első turnus

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 21:16-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzgGrafPZH20061207D1}} <b>Egy harmadrendű (másodfokú) térbeli NURBS görbe vezérlőpontjai rendre:<br> <math> \overrightarrow{r_0}=[0, …”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


Egy harmadrendű (másodfokú) térbeli NURBS görbe vezérlőpontjai rendre:
[math] \overrightarrow{r_0}=[0, 0, 0], \overrightarrow{r_1}=[1, 2, 3], \overrightarrow{r_2}=[-1, 3, 5]. [/math]
A vezérlőpontokhoz rendelt w súlyok rendre [math] w_0=1,~w_1=2,~w_2=3. [/math]
A t csomópontvektor: [math] t=[t_0,~t_1,~t_2,~t_3,~t_4,~t_5]=[1, 2, 3, 4, 5, 6]. [/math]

Adja meg a görbe pontját a t=3,5 paraméterértéknél!

-- Csapszi - 2006.12.07.

Megoldás:

A NURBS görbe egy olyan NUBS görbe, melynek a vezérlőpontjai súlyozva vannak a megfelelő w súlyokkal.

[math] \overrightarrow{r}(t)=\frac{\sum\limits_{i}^{m-1}w_iB_{i,m}^{NUBS}(t)\overrightarrow{r_i}}{\sum\limits_{j}^{m-1}w_jB_{j,m}^{NUBS}(t)} [/math]

Számítsuk ki tehát a NUBS görbe bázisfüggvényeit a Cox-deBoor formulával!

[math] B_{i,1}^{NUBS}(t)=\left\{\begin{array}{ll} 1, \mathrm{ha~} t_i \leq t \lt t_{i+1} \\ 0, \mathrm{egy\acute{e}bk\acute{e}nt}. \end{array}\right. [/math]

[math] B_{i,k}^{NUBS}(t)=\frac{(t-t_i)B_{i,k-1}^{NUBS}(t)} {t_{i+k-1}-t_i} + \frac{(t_{i+k}-t)B_{i+1,k-1}^{NUBS}(t)} {t_{i+k}-t_{i+1}}, \mathrm{ha~k\gt 1} [/math]

Az elsőrendű (azaz nulladfokú - konstans) bázisfüggvényű NUBS bázisfüggvényeinek csak ott lesz 0-tól különböző értéke, ahol a [math] t [/math] paraméter [math] t_i [/math] és [math] t_{i+1} [/math] közé esik. Mivel [math] t=3,5 [/math], ezért:

[math] B_{0,1}^{NUBS}(3.5)=0,~B_{1,1}^{NUBS}(3.5)=0,~B_{2,1}^{NUBS}(3.5)=1 [/math]

A másodrendű bázisfüggvények közül csak annak lesz 0-tól különböző értéke, amelynek a Cox-deBoor formula második képletében az összeg legalább egyik oldala 0-tól különböző. Ehhez az kell, hogy vagy [math] (t-t_i)B_{i,k-1}^{NUBS}(t) \neq 0 [/math] vagy [math] (t_{i+k}-t)B_{i+1,k-1}^{NUBS}(t) \neq 0. [/math]

Vagyis csak azok lehetnek 0-nál nagyobbak, amelyek felhasználják a [math] B_{2,1}^{NUBS}(3.5)=1 [/math] -et az összeg valamely oldalán, és a t paraméterrel való szorzás is nullától különböző. [math] B_{2,1}^{NUBS} [/math]-ot nyilván a [math] B_{1,2}^{NUBS} [/math] és a [math] B_{2,2}^{NUBS} [/math] használja, egyik esetben az összeg jobb oldalán, másik esetben a bal oldalán. Így elég ezeket kiszámítani, a többi biztosan 0 értékű lesz, és ezzel időt spórolunk.

[math] B_{1,2}^{NUBS}(3.5) = 0+\frac{(t_3-3.5)\cdot B_{2,1}^{NUBS}(3.5)} {t_3-t_2} = \frac{4-3.5 \cdot 1} {4-3} = 0.5 [/math]
[math] B_{2,2}^{NUBS}(3.5) = \frac{(3.5-t_2)\cdot B_{2,1}^{NUBS}(3.5)} {t_3-t_2} + 0 = \frac{3.5-3 \cdot 1} {4-3} = 0.5 [/math]

A harmadrendű bázisfüggvények ugyanezen megfontolás miatt csak akkor lesznek 0-tól különbözőek, ha a [math] B_{1,2}^{NUBS}(3.5)=0.5 [/math] vagy a [math] B_{2,2}^{NUBS}(3.5)=0.5 [/math] valamelyike szerepel a Cox-deBoor formulában. A [math] B_{1,2}^{NUBS} [/math]-öt a jobb oldalán használja a [math] B_{0,3}^{NUBS} [/math], a bal oldalán pedig a [math] B_{1,3}^{NUBS} [/math] használja. Hasonlóképpen a [math] B_{2,2}^{NUBS} [/math]-öt a jobb oldalán a [math] B_{1,3}^{NUBS} [/math], a bal oldalán pedig a [math] B_{2,3}^{NUBS} [/math] használja. Így tehát ezeknek lehet csak 0-tól különböző értéke, és elég csak a megfelelő oldalát kiszámítanunk!

[math] B_{0,3}^{NUBS}(3.5) = 0+\frac{(t_3-3.5)\cdot B_{1,2}^{NUBS}(3.5)} {t_3-t_1} = \frac{4-3.5 \cdot 0.5} {4-2} = 0.125 [/math]

[math] B_{1,3}^{NUBS}(3.5) = \frac{(3.5-t_1)\cdot B_{1,2}^{NUBS}(3.5)} {t_3-t_1} + \frac{t_4-3.5 \cdot B_{2,2}^{NUBS}(3.5)} {t_4-t_2} = \frac{3.5-2 \cdot 0.5} {4-2} + \frac{5-3.5 \cdot 0.5} {5-3} = [/math]
[math] 0.375 + 0.375 = 0.75 [/math]

[math] B_{2,3}^{NUBS}(3.5) = \frac{(3.5-t_2)\cdot B_{2,2}^{NUBS}(3.5)} {t_4-t_2} + 0 = \frac{3.5-3 \cdot 0.5} {5-3} = 0.125 [/math]

Most már csak annyi van hátra, hogy a fenti NURBS egyenletbe behelyettesítsünk:

[math] \overrightarrow{r}(3.5) = \frac{w_0 \cdot B_{0,3}^{NUBS}(3.5) \cdot \overrightarrow{r_0} + w_1 \cdot B_{1,3}^{NUBS}(3.5) \cdot \overrightarrow{r_1} + w_2 \cdot B_{2,3}^{NUBS}(3.5) \cdot \overrightarrow{r_2}} {w_0 \cdot B_{0,3}^{NUBS}(3.5) + w_1 \cdot B_{1,3}^{NUBS}(3.5) + w_2 \cdot B_{2,3}^{NUBS}(3.5)} [/math]

[math] \overrightarrow{r}(3.5) = \frac{1 \cdot 0.125 \cdot [0,0,0] + 2 \cdot 0.75 \cdot [1,2,3] + 3 \cdot 0.125 \cdot [-1,3,5]} {1 \cdot 0.125 + 2 \cdot 0.75 + 3 \cdot 0.125} = [/math]

[math] \frac{[0,0,0] + [1.5,3,4.5] + [-0.375,1.125,1.875]} {2} = [0.5625,2.0625,3.1875] = [\frac{9}{16}, \frac{33}{16}, \frac{51}{16}] [/math]


-- NeoXon - 2006.12.08.

Csak egy kis módosítás... A [math] B_{2,3}^{NUBS}(3.5) [/math]-ben becsúszott egy kis számolási hiba. Helyesen:

[math] B_{2,3}^{NUBS}(3.5) = \frac{(3.5-t_2)\cdot B_{2,2}^{NUBS}(3.5)} {t_4-t_2} + 0 = \frac{3.5-3 \cdot 0.5} {5-3} = 0.0625 [/math]

És ekkor a NURBS egyenlete helyesen:

[math] \overrightarrow{r}(3.5) = \frac{1 \cdot 0.125 \cdot [0,0,0] + 2 \cdot 0.75 \cdot [1,2,3] + 3 \cdot 0.0625 \cdot [-1,3,5]} {1 \cdot 0.125 + 2 \cdot 0.75 + 3 \cdot 0.0625} = [/math]

[math] \frac{[0,0,0] + [1.5,3,4.5] + [-0.1875,0.5625,0.9375]} {2} = [\frac{21}{29},\frac{39}{29},3] [/math]

-- SamiRello - 2007.01.01.

KIEG:

Szerintem pedig nincs igazad az elszámolással, márcsak azért sem, mert a bázisfüggvények összege 1-et kell adjon, ha pedig egyik 1/8, másik 3/4, az utolsó nem lehet 1/16. Meg pontos számolással is NeoXon eredményét lehet megkapni.

-- Zsófi - 2007.01.02.

Tényleg én számoltam el :D

-- Samirello - 2007.01.06.

Lehet, hogy tévedek, de szntem a csomópont-vektor, amit megadtak, tartalmazza a magasabbrendű bázisfüggvényekhez szükséges kiegészítő csomópontokat is, szám szerint 2-t, tehát a nulladik kontrollpont elsőrendű paramétertartománya nem az 1-2, hanem a 3-4, ami a hasznos paramétertartomány is egyben. Három kontrollpontnál, harmadrendű NURBS görbékkel számolva a hasznos tartomány 1 intervallum. Tehát a t0, t1 csomópontok felelnek meg a t(-1), t(-2)-nek, csak átindexelték, mint ahogy a könyv is írja. Vagy tévednék? Szóljatok légyszi, ha nincs igazam!

-- Aayven - 2007.01.01.