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

Ez az oldal a korábbi SCH wikiről lett áthozva.

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:
r0=[0,0,0],r1=[1,2,3],r2=[1,3,5].
A vezérlőpontokhoz rendelt w súlyok rendre w0=1,w1=2,w2=3.
A t csomópontvektor: t=[t0,t1,t2,t3,t4,t5]=[1,2,3,4,5,6].

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.

r(t)=im1wiBi,mNUBS(t)rijm1wjBj,mNUBS(t)

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

Bi,1NUBS(t)={1,hatit<ti+10,egye´bke´nt.

Bi,kNUBS(t)=(tti)Bi,k1NUBS(t)ti+k1ti+(ti+kt)Bi+1,k1NUBS(t)ti+kti+1,hak>1

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 t paraméter ti és ti+1 közé esik. Mivel t=3,5, ezért:

B0,1NUBS(3.5)=0,B1,1NUBS(3.5)=0,B2,1NUBS(3.5)=1

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 (tti)Bi,k1NUBS(t)0 vagy (ti+kt)Bi+1,k1NUBS(t)0.

Vagyis csak azok lehetnek 0-nál nagyobbak, amelyek felhasználják a B2,1NUBS(3.5)=1 -et az összeg valamely oldalán, és a t paraméterrel való szorzás is nullától különböző. B2,1NUBS-ot nyilván a B1,2NUBS és a B2,2NUBS 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.

B1,2NUBS(3.5)=0+(t33.5)B2,1NUBS(3.5)t3t2=43.5143=0.5
B2,2NUBS(3.5)=(3.5t2)B2,1NUBS(3.5)t3t2+0=3.53143=0.5

A harmadrendű bázisfüggvények ugyanezen megfontolás miatt csak akkor lesznek 0-tól különbözőek, ha a B1,2NUBS(3.5)=0.5 vagy a B2,2NUBS(3.5)=0.5 valamelyike szerepel a Cox-deBoor formulában. A B1,2NUBS-öt a jobb oldalán használja a B0,3NUBS, a bal oldalán pedig a B1,3NUBS használja. Hasonlóképpen a B2,2NUBS-öt a jobb oldalán a B1,3NUBS, a bal oldalán pedig a B2,3NUBS 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!

B0,3NUBS(3.5)=0+(t33.5)B1,2NUBS(3.5)t3t1=43.50.542=0.125

B1,3NUBS(3.5)=(3.5t1)B1,2NUBS(3.5)t3t1+t43.5B2,2NUBS(3.5)t4t2=3.520.542+53.50.553=
0.375+0.375=0.75

B2,3NUBS(3.5)=(3.5t2)B2,2NUBS(3.5)t4t2+0=3.530.553=0.125

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

r(3.5)=w0B0,3NUBS(3.5)r0+w1B1,3NUBS(3.5)r1+w2B2,3NUBS(3.5)r2w0B0,3NUBS(3.5)+w1B1,3NUBS(3.5)+w2B2,3NUBS(3.5)

r(3.5)=10.125[0,0,0]+20.75[1,2,3]+30.125[1,3,5]10.125+20.75+30.125=

[0,0,0]+[1.5,3,4.5]+[0.375,1.125,1.875]2=[0.5625,2.0625,3.1875]=[916,3316,5116]


-- NeoXon - 2006.12.08.

Csak egy kis módosítás... A B2,3NUBS(3.5)-ben becsúszott egy kis számolási hiba. Helyesen:

B2,3NUBS(3.5)=(3.5t2)B2,2NUBS(3.5)t4t2+0=3.530.553=0.0625

És ekkor a NURBS egyenlete helyesen:

r(3.5)=10.125[0,0,0]+20.75[1,2,3]+30.0625[1,3,5]10.125+20.75+30.0625=

[0,0,0]+[1.5,3,4.5]+[0.1875,0.5625,0.9375]2=[2129,3929,3]

-- 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.