[QGHG-it-dev-list] Zadatak 16 - Pachner-ov potez 1-u-3 (2-dim kompleks)
Marko Vojinovic
vmarko at ipb.ac.rs
Tue Mar 1 03:54:52 CET 2022
Implementirati f-ju koja ce da realizuje Pachner-ov potez 1-u-3 za kompleks dimenzije D=2:
KSimplex* Pachner_move_1_to_3( KSimplex *simp, SimpComp *G );
Input: 2-simpleks simp nad kojim se vrsi potez, kompleks G.
Output: Verteks (k=0) koji se kreira potezom.
Ova f-ja predstavlja konkretnu instancu za D=2 poteza iz zadatka 15, i treba da je napravimo "rucno", kako bismo mogli da testiramo ispravnost f-je iz zadatka 15, a i bice konceptualno jednostavnija od opsteg slucaja. Takodje, sve ostale Pachner-ove poteze cemo realizovati na ovaj nacin, pa sledi par instrukcija koje vaze generalno za sve ostale Pachner-zadatke.
Pachner-ov potez je "lokalna" transformacija kompleksa, koja na odredjeni nacin menja 2-3 simpleksa (i njihove podsimplekse) nad kojima se primenjuje. Ostatak kompleksa se ne menja. Potez se najlakse zadaje tako sto se navede verteks-struktura polaznih simpleksa u kompleksu, i odgovarajuca struktura finalnih simpleksa. Potez 1-u-3 je definisan i vrsi se nad jednim trouglom (k=2) u kompleksu D=2, ovako:
Pocetna struktura:
k=0: 1, 2, 3
k=1: (1-2), (1-3), (2-3)
k=2: (1-2-3)
Finalna struktura:
k=0: 1, 2, 3, 4
k=1: (1-2), (1-3), (2-3), (1-4), (2-4), (3-4)
k=2: (1-2-4), (1-3-4), (2-3-4)
Obratiti paznju da smo nad datim trouglom (1-2-3) izvrsili potez tako sto smo: dodali jedan nov verteks 4, zakacili ga za postojece ivice dodajuci tri nove ivice, konstruisali tri nova trougla koji se susrecu u verteksu 4, i na kraju obrisali stari trougao (1-2-3). Taj postupak treba procitati i razumeti uporedjivanjem pocetne i finalne tablice, za svaki Pachner-ov potez koji cemo implementirati. Ima smisla da na papiru nacrtate sliku koja odgovara svakoj od tablica, i da ih uporedite, da vidite geometrijski smisao poteza.
Na osnovu te razlike u tablicama se kreira i algoritam:
(1) Proveriti da je simp nivoa k=2, da je element G, i da je D=2. Ako bilo sta od ovoga nije zadovoljeno, prijaviti error u log i vratiti nullptr.
(2) Kreirati cetvrti verteks, tri nova edge-a, i tri nova trougla. Ukoliko su stari edge-vi obojeni Boundary bojom, obojiti i nove edge-ve i setovati boju na "false" za svaki od njih.
(3) Popuniti tablice suseda svih novih simpleksa, sta je cemu sused, gledajuci u sliku koja odgovara finalnoj tablici, ili uporedjivanjem brojeva verteksa (dva simpleksa su susedi ako su svi verteksi jednog istovremeno i verteksi drugog, sa izuzetkom da nijedan simpleks nije sused samom sebi).
(4) Deinstancirati pocetni simp (1-2-3).
(5) Vratiti pointer na novi (cetvrti) verteks. Ako je nesto poslo naopako, prijaviti error u log i vratiti nullptr.
Proverite ispravnost Pachner-ovog poteza tako sto cete seed-ovati jedan trougao, obojiti njegove vertekse sa UniqueIDColor, odstampati ceo kompleks sa print_compact(), sto treba da vam reprodukuje pocetnu tablicu. Zatim primenite potez nad jedinim 2-simpleksom u kompleksu, obojite vertekse ponovo sa UniqueIDColor, i odstampajte ponovo kompleks sa print_compact(). Ako je potez implementiran tacno, to bi trebalo da vam reprodukuje finalnu tablicu. Mozete sa print_compact() da stampate i neighbors tablicu svakog od k-simpleksa, da proverite da li ste sve susede dobro zadali.
:-)
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
More information about the QGHG-it-dev-list
mailing list