[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