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

Marko Vojinovic vmarko at ipb.ac.rs
Thu Feb 17 14:35:42 CET 2022


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


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