[QGHG-it-dev-list] Zadatak 1 --- seed fja za tetraedar
Marko Vojinovic
vmarko at ipb.ac.rs
Sun Feb 20 05:17:35 CET 2022
Pozdrav Nenade,
Odlicno, nov kod je super, narocito add_neighbor! :-)
> Hoces da napravim da add_neighbor dodaje i podsusede
Da, to je odlicna ideja, napravi to! To bi nam omogucilo da za svaki k-simpleks moramo eksplicitno da pozovemo add_neighbor da mu doda podsusede samo jedan nivo ispod (k-1), a onda ce add_neighbor automatski da mu doda i podsusede tih podsuseda itd. I to sve isto simetricno, tako da k-simpleks bude automatski na spiskovima nadsuseda svakog od tih dodatih podsuseda.
Samo moramo da pazimo na jednu stvar --- takva funkcionalnost add_neighbor se oslanja na pretpostavku da su svi podsusedi datih podsuseda vec definisani i dodati gde treba. Drugim recima, u seed f-jama moramo da dodajemo susede redom od najmanjeg nivoa ka najvecem: prvo da edgevima dodamo vertekse kao podsusede, pa onda trouglovima edgeve, pa onda tetraedrima trouglove, itd. Ako se odstupi od tog rastuceg redosleda, f-ja add_neighbor nece dati tacan rezultat. Ali to je ok, samo treba da budemo svesni da je redosled dodavanja podsuseda bitan.
> Ako stignes, baci pogled na Triangle compact printing ako ne postavis UniqueID boje, tj. iz seed_single_triangle izbacis pretposlednji paragraf koda ("Create and apply unique ID
> colors:". :) Ja sam stavio da ne stampa u zagradama ako ne nadje UniqueID color. Mozda treba. Slobodno usput ocisti kod od mojih UniqueID boja.
Vidim output od print_compact za tetrahedron, to je to isto, jer njemu nismo zadali UniqueID. :-) Radi ok, tj. ispisuje ono sto ocekujem kad nije obojen.
Ali cela ta situacija kada fale UniqueID boje je potpuni corner-case koji nam uopste nije vazan, i moze da nastane samo nekom greskom (koje smo mi npr. namerno pravili rucnim zakomentarisavanjem onih linija u seed f-jama). To sto pisemo "simplex" je samo da bismo naznacili korisniku da se negde zeznuo, nista vise.
Umesto cele te price, mozemo npr. da dopunimo print_compact f-ju da sama automatski doda UniqueID boju na dati k-simpleks ako ustanovi da je ovaj nema, i da posalje log_report warning da je negde nedostajala ta boja, da korisnik bude upozoren u log-fajlu. I onda je to to, ispisivanje reci "simplex" nece nikada da se dogodi.
A Dusan ce (kroz zadatak 2) da napravi f-je kojima cemo sistematski po potrebi da stavljamo UniqueID boje na simplekse i\ili na ceo kompleks, pa ce print_compact mahom uvek da radi sa unapred definisanim bojama. Tako da ceo taj corner-case u praksi ne bi trebalo maltene nikad da se pojavi. ;-)
:-)
Marko
Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail: vmarko at ipb.ac.rs
On Sat, 19 Feb 2022, Nenad Korolija wrote:
> Zdravo Marko,
>
> Adaptirao sam add_nighbor da dodaje susede simetricno uz prethodnu proveru.
> Azurirao sam onda seed funkcije.
> Dodao sam da main stampa i compact tetrahedron.
>
> Hoces da napravim da add_neighbor dodaje i podsusede, tako da za tetrahedron->add_neighbor(trougao), doda ne samo trougao i trouglu tetrahedron, vec i sve ivice trougla (ako vec nisu i
> svim ivicama trougla tetrahedron) i sve vertekse (ako vec nisu dodate ivice ni verteksi i obrnuto=da verteksima doda tetrahedron)?
> Naravno, pravio bih generalno za proizvoljnu dimenziju.
>
>
> Ako stignes, baci pogled na Triangle compact printing ako ne postavis UniqueID boje, tj. iz seed_single_triangle izbacis pretposlednji paragraf koda ("Create and apply unique ID
> colors:". :) Ja sam stavio da ne stampa u zagradama ako ne nadje UniqueID color. Mozda treba. Slobodno usput ocisti kod od mojih UniqueID boja.
>
> Pozdrav,
> Nenad
>
> On Thu, Feb 17, 2022 at 2:35 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>
> Pozdrav Jaroslave i Nenade,
>
> Pogledao sam seed f-ju za tetraedar, sve izgleda ok, samo morate da popravite susede jos malo. Naime, tetrahedron1 ("unutrasnjost" kompleksa) je sused za sve ostale
> simplekse --- ne samo za trouglove, nego i za ivice i vertekse. Pa treba da se poveze i sa njima, na isti nacin kao i trouglovi. Takodje, i svi oni treba da imaju
> tetrahedron1 kao suseda (ukljucujuci i trouglove).
>
> Btw, izgleda da vam nisam dovoljno precizno objasnio sta znaci "biti sused" na sastancima --- sused datog k-simpleksa su svi simpleksi koji ga "dodiruju" na crtezu. Posto je
> "unutrasnjost" cele figure takodje k-simpleks (najviseg nivoa k=D), ona uvek dodiruje sve ostale simplekse u figuri.
>
> Drugo, jedna tehnicka sugestija --- posto je "biti sused" uvek simetricna relacija (ako je A sused od B onda je i B sused od A, tj. "dodirivanje" je uvek dvosmerno), ideja
> je da napravimo malo inteligentniju implementaciju f-je KSimplex::add_neighbor( *k1 ), tako da radi sledece:
>
> (1) proveri da li je dati simpleks k1 vec prisutan na spisku mojih suseda --- dodaj ga ako nije, i zatim
> (2) proveri da li sam ja vec prisutan na njegovom spisku suseda --- dodaj me tamo ako nisam.
>
> Ovde pod "ja" mislim na pointer na onaj "this" objekat u odnosu na koji se poziva f-ja. Ovakva implementacija bi s jedne strane osigurala da ne dodamo nesto negde duplo, a s
> druge strane prepolovila bi kolicinu koda u svim dosadasnjim seed f-jama, da ne moramo uvek da pisemo duple konstrukcije tipa
>
> e2->add_neighbor(v1);
> v1->add_neighbor(e2);
>
> nego da bude dovoljno pozvati samo jednu od te dve f-je.
>
> :-)
> Marko
>
>
> Dr. Marko Vojinovic
> Group for Gravitation, Particles and Fields
> Institute of Physics
> University of Belgrade
> ======================
> home page: www.markovojinovic.com
> e-mail: vmarko at ipb.ac.rs
>
>
>
> On Mon, 14 Feb 2022, Marko Vojinovic wrote:
>
> >
> > Pozdrav Jaroslave i Nenade,
> >
> > Odlicno, to je to, samo treba da se doteraju susedi. Plan je sledeci --- kad
> > budemo napravili f-je za "rast" kompleksa, videcemo koliko memorije kompleks
> > trosi. Onda mozemo iz nekog velikog kompleksa da obrisemo sve susede sem
> > prvih nad- i pod-suseda, i da vidimo koliko ce to memorije da oslobodi, i da
> > li nam je zgodnije da ostale susede pamtimo ili racunamo svaki put. Ali to
> > cemo da testiramo i odlucimo posle --- a za sada u seed f-jama zadajemo sve
> > susede.
> >
> > Drugo, ako nije jasno sa slike sta je cemu susedno (sto ume da bude konfuzno
> > dok se ne uvezbate), mozete da primenite korake (2.1) i (2.2) iz algoritma za
> > zadatak 3. Za tetraedar to moze bez problema da se ispise na papiru, i onda
> > znate koji simpleksi treba da se stave u koje susede.
> >
> > I da odgovorim na pitanja:
> >
> >> Tetrahedron sam nacrtao ručno (nisam mogao da kopam po snimljenom
> >> materijalu, mislim da smo ga negde crtali), pa sam ga opisao u kodu.
> >
> > Ok, mada nema potrebe --- dok ne zadamo tetraedru neke specificne osobine
> > (stavljanjem boja), tetraedar je tetraedar, svi su isti. :-) Kako god ga
> > nacrtao, on ima 4 temena, 6 ivica, 4 trougla i 1 unutrasnjost (sa pravilno
> > zakacenim susedima). :-)
> >
> >> Nisam još dodelio uniqueID boje, jer to nije traženo u zadatku. S obzirom
> >> da je to implementirano u seed_single_triangle metodi, trebalo bi da bude i
> >> ovde?
> >
> > Ne treba da dodeljujes UniqueID boje, to cemo da izbacimo i iz
> > seed_single_triangle(), i umesto toga cemo da napravimo par zasebnih funkcija
> > da stavljaju te boje --- to je cilj zadatka 2. Jedina boja koju zadajemo
> > eksplicitno u seed f-jama je Boundary boja (i to samo ako dati kompleks ima
> > granicu, a inace ni nju ne stavljamo). Sve ostale boje ce se dodavati nekim
> > drugim f-jama (izvan seed f-ja), kad nam koja boja zatreba --- ukljucujuci i
> > UniqueID.
> >
> >> Takođe, kako glasi množina od k-simplex (k-simplexes, k-simplices?).
> >
> > Koliko znam, "k-simplices" je gramaticki pravilna mnozina. Ali to nije neko
> > ostro pravilo, moze da se naidje i na "k-simplexes" po literaturi...
> >
> >> Verujem da su nam ove seed funkcije zagrevanje za seed n-dimenzionalnog
> >> KSimplex-a, pa možda nema potrebe kopirati mnogo linija koda samo kao
> >> proof-of-concept.
> >
> > Jeste, ove seed f-je jesu donekle za zagrevanje za zadatke 3 i 5 (i jos neke
> > koji su u planu), ali ce da budu korisne i za testiranje ispravnosti seed
> > f-je za D-simpleks --- to je zadatak 4. Ja sam tamo napisao da rezultat seed
> > f-je za D-simpleks napisete na ekran i uporedite sa slikom na papiru, ali
> > mozete nezavisno da izvrsite i ove seed f-je koje smo sad napravili, pa da
> > uporedite sa sa njihovim rezultatom. Znaci generises jedan kompleks sa ovom
> > f-jom za tetraedar, drugi kompleks sa opstom f-jom za D-simpleks (za D=3),
> > zatim obojis i odstampas jedan, pa obojis i odstampas drugi, i uporedis
> > izlaze --- ako je sve ok, rezultati bi morali da budu identicni. :-)
> >
> > :-)
> > Marko
> >
> >
> > Dr. Marko Vojinovic
> > Group for Gravitation, Particles and Fields
> > Institute of Physics
> > University of Belgrade
> > ======================
> > home page: www.markovojinovic.com
> > e-mail: vmarko at ipb.ac.rs
> >
> >
> >
> > On Mon, 14 Feb 2022, Nenad Korolija wrote:
> >
> >> Zdravo Jaroslave,
> >>
> >> Mislim da je dobro što si dao boundary boje, a ne UniqueID boje. Taj deo
> >> treba da pročistim iz koda seed funkcija koje sam pisao. Za sad su tamo da
> >> bi se stekao osećaj kako se boji
> >> UniqueID bojama i kako se štampaju (kompaktno) kompleksi u zavisnosti od
> >> toga da li tačke imaju UniqueID.
> >>
> >> Meni deluje lepo urađeno ovo, samo što ostaje da se dogovorimo oko toga da
> >> li hoćemo da pamtimo samo susede susednih dimenzija, ili svih. Ako samo
> >> susednih, onda za trouglove ne moramo
> >> da imamo tačke. Ako svih, onda i za tetraedar treba dodati susede nižeg
> >> nivoa od trouglova i obrnuto - dodati tetraedar kao sused drugima.
> >>
> >> Koliko sam Marka razumeo, dobro je da imamo obe opcije, pa da u praksi
> >> vidimo koja se pokazuje kao bolja, tako da sam ja za to da se dodaju i za
> >> tetraedar niži susedi, ali neka Marko
> >> proceni.
> >> Verujem da su nam ove seed funkcije zagrevanje za seed n-dimenzionalnog
> >> KSimplex-a, pa možda nema potrebe kopirati mnogo linija koda samo kao
> >> proof-of-concept. U svakom slučaju, treba
> >> da se dogovorimo i uniformišemo.
> >>
> >> Možda možeš da postaviš na github.
> >>
> >> Pozdrav,
> >> Nenad
> >>
> >> On Mon, Feb 14, 2022 at 5:04 PM Jaroslav Blagojevic
> >> <jaroslav.blagojevic at gmail.com> wrote:
> >> Rasparčala se poruka, pa da je spojim. Seed tetrahedrona u prilogu.
> >> Tetrahedron sam nacrtao ručno (nisam mogao da kopam po snimljenom
> >> materijalu, mislim da smo ga negde
> >> crtali), pa sam ga opisao u kodu. Nisam još dodelio uniqueID boje,
> >> jer to nije traženo u zadatku. S obzirom da je to implementirano u
> >> seed_single_triangle metodi, trebalo bi
> >> da bude i ovde? Takođe, kako glasi množina od k-simplex (k-simplexes,
> >> k-simplices?).
> >>
> >> Pozdrav,
> >>
> >> Jaroslav
> >>
> >>
> >> On Mon, Feb 14, 2022 at 4:48 PM Jaroslav Blagojevic
> >> <jaroslav.blagojevic at gmail.com> wrote:
> >> Pozdrav,
> >> Jaroslav
> >>
> >>
> >> On Mon, Feb 14, 2022 at 4:48 PM Jaroslav Blagojevic
> >> <jaroslav.blagojevic at gmail.com> wrote:
> >> Seed tetrahedrona u prilogu. Tetrahedron sam nacrtao ručno (nisam
> >> mogao da kopam po snimljenom materijalu, mislim da smo ga negde crtali), pa
> >> sam ga opisao u
> >> kodu. Nisam još dodelio uniqueID boje, jer to nije traženo u zadatku.
> >> S obzirom da je to implementirano u seed_single_triangle metodi, trebalo bi
> >> da bude i ovde?
> >> Takođe, kako glasi množina od k-simplex (k-simplexes, k-simplices?).
> >>
> >> On Fri, Feb 11, 2022 at 10:29 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
> >>
> >> Upoznati se sa osnovnim klasama (SimpComp i KSimplex) kroz problem
> >> implementiranja seed f-je za jedan tetraedar (D=3):
> >>
> >> SimpComp* seed_single_tetrahedron( void );
> >>
> >> Input: nema.
> >> Output: pointer na instancirani simplicijalni kompleks koji se
> >> sastoji od jednog tetraedra.
> >>
> >> Funkciju implementirati kao uopstenje jednostavnijih seed f-ja
> >> seed_single_edge() i seed_single_triangle() koje je Nenad uradio, i koje
> >> kreiraju slicne
> >> komplekse za dimenzije D=1 i D=2 redom. Postupak ide u tri koraka:
> >>
> >> (1) Instancirati nov simplicijalni kompleks dimenzije D=3 i
> >> iskoristiti metod create_ksimplex() iz klase SimpComp za kreiranje
> >> odgovarajuceg broja
> >> simpleksa nivoa k=0 (verteksi), k=1 (edgevi), k=2 (trouglovi) i k=3
> >> (tetraedar) u tom kompleksu.
> >>
> >> (2) Popuniti podklasu neighbors svakog simpleksa pointerima na
> >> njegove susede, koristeci metod add_neighbor() iz klase KSimplex, na osnovu
> >> slike tetraedra
> >> i definicije suseda sa uvodnih predavanja.
> >>
> >> (3) Simpleksima nivoa k=2 (tj. trouglovima) dodeliti boju boundary, i
> >> za svaki trougao zadati vrednost te boje na true.
> >>
> >>
> >> :-)
> >> Marko
> >>
> >>
> >> Dr. Marko Vojinovic
> >> Group for Gravitation, Particles and Fields
> >> Institute of Physics
> >> University of Belgrade
> >> ======================
> >> home page: www.markovojinovic.com
> >> e-mail: vmarko at ipb.ac.rs
> >>
> >>
> >> --
> >> QGHG-it-dev-list mailing list
> >> QGHG-it-dev-list at ipb.ac.rs
> >> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
> >>
> >> --
> >> QGHG-it-dev-list mailing list
> >> QGHG-it-dev-list at ipb.ac.rs
> >> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
> >>
> >>
> >--
> QGHG-it-dev-list mailing list
> QGHG-it-dev-list at ipb.ac.rs
> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>
>
>
More information about the QGHG-it-dev-list
mailing list