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

Jaroslav Blagojevic jaroslav.blagojevic at gmail.com
Mon Feb 14 17:04:28 CET 2022


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
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220214/22b40076/attachment.htm>
-------------- next part --------------
SimpComp* seed_single_tetrahedron(string name)
{
    KSimplex *v1, *v2, *v3, *v4;
    KSimplex *e1, *e2, *e3, *e4, *e5, *e6;
    KSimplex *trianglev1v2v3;
    KSimplex *trianglev1v3v4;
    KSimplex *trianglev1v2v4;
    KSimplex *trianglev2v4v3;
    KSimplex *tetrahedron1;

    // Initialize simplicial complex of dimension 3
    SimpComp *tetrahedron = new SimpComp(name, 3);

    // Vertex v1 is located up
    // Vertex v2 is located left
    // Vertex v4 is located right
    // Vertex v3 is located down
    // Add vertices (k-simplices, k=0)
    v1 = tetrahedron->create_ksimplex(0);
    v2 = tetrahedron->create_ksimplex(0);
    v3 = tetrahedron->create_ksimplex(0);
    v4 = tetrahedron->create_ksimplex(0);

    // Add edges (k-simplices, k=1)
    e1 = tetrahedron->create_ksimplex(1);
    e2 = tetrahedron->create_ksimplex(1);
    e3 = tetrahedron->create_ksimplex(1);
    e4 = tetrahedron->create_ksimplex(1);
    e5 = tetrahedron->create_ksimplex(1);
    e6 = tetrahedron->create_ksimplex(1);

    // Add triangles (k-simplices, k=2)
    trianglev1v2v3 = tetrahedron->create_ksimplex(2);
    trianglev1v3v4 = tetrahedron->create_ksimplex(2);
    trianglev1v2v4 = tetrahedron->create_ksimplex(2);
    trianglev2v4v3 = tetrahedron->create_ksimplex(2);

    // Add tetrahedron (k-simplex, k=3)
    tetrahedron1 = tetrahedron->create_ksimplex(3);

    // Edges have vertices as neighbors
    e1->add_neighbor(v1);
    e1->add_neighbor(v2);

    // Vertices have edges as neighbors
    v1->add_neighbor(e1);
    v2->add_neighbor(e1);

    e2->add_neighbor(v1);
    e2->add_neighbor(v3);

    v1->add_neighbor(e2);
    v3->add_neighbor(e2);

    e3->add_neighbor(v1);
    e3->add_neighbor(v4);

    v1->add_neighbor(e3);
    v4->add_neighbor(e3);

    e4->add_neighbor(v2);
    e4->add_neighbor(v4);

    v2->add_neighbor(e4);
    v4->add_neighbor(e4);

    e5->add_neighbor(v2);
    e5->add_neighbor(v3);

    v2->add_neighbor(e5);
    v3->add_neighbor(e5);

    e6->add_neighbor(v3);
    e6->add_neighbor(v4);

    v3->add_neighbor(e6);
    v4->add_neighbor(e6);

    // Triangle has vertices and edges as neighbors
    trianglev1v2v3->add_neighbor(v1);
    trianglev1v2v3->add_neighbor(v2);
    trianglev1v2v3->add_neighbor(v3);
    trianglev1v2v3->add_neighbor(e1);
    trianglev1v2v3->add_neighbor(e2);
    trianglev1v2v3->add_neighbor(e5);

    // Vertices and edges have triangles as neighbors
    v1->add_neighbor(trianglev1v2v3);
    v2->add_neighbor(trianglev1v2v3);
    v3->add_neighbor(trianglev1v2v3);
    e1->add_neighbor(trianglev1v2v3);
    e2->add_neighbor(trianglev1v2v3);
    e5->add_neighbor(trianglev1v2v3);

    trianglev1v3v4->add_neighbor(v1);
    trianglev1v3v4->add_neighbor(v3);
    trianglev1v3v4->add_neighbor(v4);
    trianglev1v3v4->add_neighbor(e2);
    trianglev1v3v4->add_neighbor(e3);
    trianglev1v3v4->add_neighbor(e6);

    v1->add_neighbor(trianglev1v3v4);
    v3->add_neighbor(trianglev1v3v4);
    v4->add_neighbor(trianglev1v3v4);
    e2->add_neighbor(trianglev1v3v4);
    e3->add_neighbor(trianglev1v3v4);
    e6->add_neighbor(trianglev1v3v4);

    trianglev1v2v4->add_neighbor(v1);
    trianglev1v2v4->add_neighbor(v2);
    trianglev1v2v4->add_neighbor(v4);
    trianglev1v2v4->add_neighbor(e1);
    trianglev1v2v4->add_neighbor(e3);
    trianglev1v2v4->add_neighbor(e4);

    v1->add_neighbor(trianglev1v2v4);
    v2->add_neighbor(trianglev1v2v4);
    v4->add_neighbor(trianglev1v2v4);
    e1->add_neighbor(trianglev1v2v4);
    e3->add_neighbor(trianglev1v2v4);
    e4->add_neighbor(trianglev1v2v4);

    trianglev2v4v3->add_neighbor(v2);
    trianglev2v4v3->add_neighbor(v4);
    trianglev2v4v3->add_neighbor(v3);
    trianglev2v4v3->add_neighbor(e4);
    trianglev2v4v3->add_neighbor(e6);
    trianglev2v4v3->add_neighbor(e5);

    v2->add_neighbor(trianglev2v4v3);
    v4->add_neighbor(trianglev2v4v3);
    v3->add_neighbor(trianglev2v4v3);
    e4->add_neighbor(trianglev2v4v3);
    e6->add_neighbor(trianglev2v4v3);
    e5->add_neighbor(trianglev2v4v3);

    // Tetrahedron has triangles as neighbors
    tetrahedron1->add_neighbor(trianglev1v2v3);
    tetrahedron1->add_neighbor(trianglev1v3v4);
    tetrahedron1->add_neighbor(trianglev1v2v4);
    tetrahedron1->add_neighbor(trianglev2v4v3);

    // Triangles have boundary color
    Color *c1 = new BoundaryColor(true);
    Color *c2 = new BoundaryColor(true);
    Color *c3 = new BoundaryColor(true);
    Color *c4 = new BoundaryColor(true);
    trianglev1v2v3->colors.push_back(c1);
    trianglev1v3v4->colors.push_back(c2);
    trianglev1v2v4->colors.push_back(c3);
    trianglev2v4v3->colors.push_back(c4);

    return tetrahedron;
}


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