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

Jaroslav Blagojevic jaroslav.blagojevic at gmail.com
Mon Feb 14 16:48:01 CET 2022


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/250b66c2/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