Vlákno názorů k článku Křivky NURBS (2) od ava - Chtěli byste mít doma nějaké "krásné křivky"? S...

  • Článek je starý, nové názory již nelze přidávat.
  • 10. 3. 2006 8:17

    ava (neregistrovaný)

    Chtěli byste mít doma nějaké "krásné křivky"? S následujícím návodem je získáte snadno. Na obrazovce vašeho počítače, samozřejmě...

    To bohuzel asi ne. Libi se mi pristup Pavla Tisnovskeho ktery pise priklady v clancich tak, ze se vysledky skutecne na obrazovce objevi. Zdrojaky uvedene zde mi bohuzel nic nevykresli :-(

    Pro snazší pochopení je všude brán uzlový vektor, jehož prvních degree+1 složek jsou nuly a posledních degree+1 složek jsou jedničky. Proto se parametr t pohybuje v intervalu 0 .. 1, křivka začíná v prvním řídícím bodě a končí v posledním řídícím bodě, což je pro technickou praxi důležité

    Bohuzel i pres to ze je to pro snazsi pochopeni, jsem nepochopil proc pri volbe tohoto uzloveho vektoru se parametr t pohybuje v 0 .. 1, proc krivka zacina a konci ve zminovanych bodech a proc je to v technicke praxi dulezite. Ale verim ze kdybych se dukladne ponoril do vzorcu z minuleho dile a precetl si nejakou literaturu o nurbs krivkach v technicke praxi tak to pochopim, beru to jako svou chybu.

    Celý algoritmus je založen na opakování metody nazvané knot insertion = vkládání uzlu

    pekna veta, autorka rozhodne neni grafomanka :-)

    Celý algoritmus je založen na opakování metody nazvané knot insertion = vkládání uzlu. Počet těchto opakování je v programu určen proměnnou h. Pokud se parametr t v uzlovém vektoru nevyskytuje, je h rovno stupni křivky. Pokud se parametr t vyskytuje v uzlovém vektoru (t0, t1, ... tn+m+1), opakování knot insertion se o tuto hodnotu sníží. Celý tento postup se nazývá deBoorův, někdy též Cox-deBoorův algoritmus.

    Opet nerozumim :-( volim si h a podle jeho hodnoty mi vyjde pocet opakovani nebo naopak? kde se vezme v uzlovem vektoru parametr t a v jakem tvaru? Co znamena "opakovani knot insertion se o tuto hodnotu snizi"? o jakou hodnotu? jak se vubec muze snizit "opakovani"?

    Jelikož je b-spline funkce stupně nula rovna jedné, jsou prvními výsledky kroku nula samotné řídící body.

    Tomu mi asi nezbyde nez verit.

    Pro parametr t se spočítají hodnoty alfa, což je výraz před bázovými polynomy v definici b-spline funkce. Termin bazovy polynom se v serii objevuje poprve.

    Následně se provede výpočet s hodnotou vypočtenou v předchozím kroku a s příslušnou hodnotou alfa. Celý výpočet se opakuje h-krát.

    Jaky vypocet?

    .......

    samotny zdrojak jiz rozebirat nebudu, ale jak rikam, kdyby se dal opravdu spustit a nebyly to jen komentovane fragmenty kodu, libilo by se mi to podstatne vic.

    Grafikou se nezabyvam, takze toho ze jsem NURBS z clanku nepochopil prilis nelituji. Myslim si ale ze pro lidi co se grafikou zabyvaji existuji schudnejsi cesty jak NURBS vstrebat nez je cteni teto serie.

  • 10. 3. 2006 8:31

    david (neregistrovaný)
    Zda se mi ze ve fragmentech kodu jsou chyby:

    4. pouziva se neexistujici operator in
    6. 7. v cyklech je spatne ukoncovaci podminka, mysleno je zrejme napr. j < h + 1 misto j > h + 1
  • 10. 3. 2006 12:53

    jm
    in je zjevne klasicke "elementitko", ale taky nechapu, proc ho autorka neopsala pomoci nerovnosti, kdyz jinak vsechno kolem vypada jako C.
  • 10. 3. 2006 14:29

    Culibrk (neregistrovaný)
    Treba proto, ze generovala C z nejakeho pseudo-basicu, ve kterem byvaji casto algoritmy uvadeny ve tretich zdrojich (knizkach). Mozna jsem se netrefil, kazdopadne je videt, ze tento kod nikdy jako C nebezel. Tim nechci snizovat kvalitu algoritmu, spise jeho interpretace v C.
  • 10. 3. 2006 14:54

    Jana Procházková (neregistrovaný)
    Funkcni program najdete na adrese prochazkovajana.ic.cz/files/nurbs2.c Redakce ho asi zapomnela pripojit. Po zadani parametru t se vraci bod na ctvrtkruznici o stredu [0,0,0] a polomeru 1. Staci pridat metodu na vykresleni. Body i vsechny parametry si muzete libovolne menit, jen musi splnovat vstupni podminky.

    Pouziti v technicke praxi je napriklad takove:
    -chcete delat oblouk mostu, prvni a posledni bod musite zadat na krivce
    -pri navazovani nemuzou krajni body jen tak litat nekde uprostred krivky


    Pro parametr t se vypocita bod krivky C(t), to je snad pochopitelne. Parametr t je z intervalu <0,1>, uzlovy vektor je posloupnost cisel take v intervalu <0,1> Pokud se t=t_i pro nejake i=0,1,..,n+m+1, tak se toto cislo v intervalu vyskytuje. Kolikrat je v tom uzlovem vektoru stejne cislo jako t, takove cislo se odecte od stupne krivky a vysledek je promenna h. A tolikrat probehne knot insertion.
  • 10. 3. 2006 15:12

    Culibrk (neregistrovaný)
    Diky.