[QGHG-it-dev-list] Zadatak 1 --- seed fja za tetraedar

Nenad Korolija nenadko at gmail.com
Sun Feb 20 09:19:57 CET 2022


Hvala!

Napravio da add_neighbor(k1) rekurzivno dodaje i sve lover level neighbors
od k1 (ako vec ne postoje). Pod dodavanjem nekoga kao suseda podrazumevam
zapravo 2 dodavanja (u oba smera).
Azurirao seed.cpp u skladu sa tim.
To da za dimenziju k dodam samo k-1 susede je i bila ideja - zato sam i
pitao. :)

Trenutno, u classes.cpp:63 ne proveravam da li vec postoji sused nivoa k-1,
pa da stanem, vec i dalje teram sa k-2, k-3,...0. Ovo je bezbednije, ali
podrazumeva mnogo nepotrebnog drljanja. Ako u tetrahedron dodamo trougao,
automatski smo mu dodali 3 ivice i 3 tacke. Uzalud cemo po 2. put prolaziti
svaku ivicu, a svako uzaludno obilazenje ivice povlaci po dva uzaludno
obidjena verteksa. Vidi sam sta to znaci na vise dimenzija...
Da dodam ljudski uslov, pa da se oslanjamo da ce korisnik znati sta radi
(sta dodaje)?


Ovo za print_compact vidim kao dupliranje koda sa potencijalno malo
doprinosa:
1) Ako stampamo simplex, vec saljemo warning time. Ne bi trebalo da se desi.
2) Ako Dušan napravi bojenje, uvek mozemo iz print_compact prvo da pozovemo
to, pa onda odstampamo. Mana: u tom slucaju nemamo warning.
Ako je warning bitan, mozemo samo 1), pa kad vidi, neka zatrazi pomoc od
Dušana!
Ako nije bitan, mozemo u svakom slucaju da trazimo pomoc od Dušana!
Ono sto mi izgleda kao sistemsko resenje je da Dušanov kod ima mogućnost da
izbacuje warning ako treba (bool argument), pa da ga pozivamo kako hoćemo.
Naravno, Dušan ne treba da brine o ovome. Naknadno se da srediti ova
dodatna funkcionalnost.
Moje skromno iskustvo mi govori da ne treba da imamo kod sa istom
funkcionalnoscu na 2 mesta, pogotovo ako ih pisu 2 coveka, cime naknadno
menjanje/odrzavanje postaje znatno teze.
Marko, javi kako mislis i implementiracemo. Ipak ja vidim samo pesak i ne
znam kakva ce gradjevina od njega biti napravljena, tj. ne vidim ko bi
obojio deo, pa stampao sa ispisivanjem svega (nadopunjujuci UniqueID gde
fali). Zato sam print_compact i napravio tako da ne stampa nista ako vidi
da niko od suseda nije obojen. Tako mozemo za tetraedar da stampamo samo
trouglove i nista vise, tj. za neku blesavu dimenziju ne dobijamo prakticno
beskonacan i necitljiv izlaz.

Pozdrav,
Nenad

On Sun, Feb 20, 2022 at 5:17 AM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:

>
> 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
> >
> >
> >--
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220220/2c006c30/attachment-0001.htm>


More information about the QGHG-it-dev-list mailing list