[QGHG-it-dev-list] Zadatak 34 - renumerisanje UniqueID boje

Marko Vojinovic vmarko at ipb.ac.rs
Sat Nov 19 02:24:32 CET 2022


Tokom rada moze rutinski da se dogodi sledeci scenario:

   sc1 = seed_sphere(...);
   UniqueIDColor::colorize_entire_complex(sc1);
   sc2 = seed_single_simplex(...);
   UniqueIDColor::colorize_entire_complex(sc2);
   sc3 = seed_sphere(...);
   UniqueIDColor::colorize_entire_complex(sc3);
   unseed_complex(sc2); // definisano u zadatku 33

Posto je UniqueID boja dizajnirana tako da globalna varijabla next_free_uid_number uvek monotono raste (cime se cuva jedinstvenost id-jeva), nakon brisanja sc2 ostaje "rupa" sa gomilom neupotrebljenih UniqueID brojeva. Takodje, kad druge razne f-je budu kreirale i brisale pojedinacne simplekse u kompleksu, njihovi UniqueID brojevi (ako su simpleksi obojeni) ce takodje da se dodaju i brisu.

U tom smislu, posle neke kolicine manipulacija nad kompleksima, next_free_uid_number moze da poraste na relativno visoku vrednost, sa gomilom obrisanih/neupotrebljenih brojeva koji su manji. Da bi korisnik mogao to po potrebi da "pocisti", treba implementirati f-ju koja ce (kad je pozovemo) da "renumerise" sve UniqueID brojeve, redom od 1 pa nadalje koliko ih zapravo ima, i onda da resetuje next_free_uid_number na prvi slobodan broj. Fora je u tome da vrednost bilo kog UniqueID broja nije vazna i moze da se menja, dokle god garantujemo da je unique, tj. da nijedan drugi simpleks nema tu istu vrednost. Zato sve vrednosti UniqueID boje smemo da "resetujemo" ako hocemo.

Dakle, implementirati f-ju

   void UniqueIDColor::relabel_everything( void );

koja ce da uradi sledece:

* da inicijalizuje svoj brojac na N=1,

* da prodje kroz sve seed-ovane komplekse u globalnoj varijabli SeededComplexes (vidi zadatak 33),

* za svaki kompleks, da prodje redom kroz sve njegove elemente svih nivoa,

* za svaki k-simpleks, ako je obojen UniqueID bojom, da setuje boju na id=N i uradi N++,

* kad zavrsi ovo odozgo, da setuje next_free_uid_number=N.

To je to. Na ovaj nacin cemo sve obojene simplekse da "prebrojimo" ispocetka, i da im dodelimo nove jedinstvene UniqueID-jeve, tako da nema neiskoriscenih brojeva (rupa) izmedju.

Testiranje mozete da izvedete na gornjem primeru sa sc1, sc2 i sc3. Ako ima pitanja, pitajte. ;-)

Btw, ovu funkciju ce korisnik da poziva kada smatra da mu je tako nesto potrebno. Naravno, ako se korisnik u svom algoritmu oslanja na vrednosti UniqueID boje (pamti neke vrednosti, koristi ih negde nekako, stagod...), onda je na njemu da proceni da li i kada sme da izvrsi ovu funkciju, jer ce ona ocigledno da mu promeni sve te id-jeve, pa to treba da radi samo ako je siguran da nece da napravi zbrku samom sebi. Ali to je njegov problem, na nama je da obezbedimo ovu funkcionalnost, i podrazumevamo da korisnik zna sta radi sa svojim algoritmom... ;-)

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