Untitled
raw download clone
TEXT
views 24
,
size 1840 b
void Object::aplicaTG(TG *tg){




    if (dynamic_cast<Translate1 *>(tg) || dynamic_cast<RotateSecundaria *>(tg)) {
        mat4 matriu = tg->getTG();




        for(int i = 0; i < vertexs.size(); i++) {
            vertexs[i] = matriu * vertexs[i];
        }




        for (int i = 0; i < normalsVertexs.size(); i++) {
            normalsVertexs[i] = matriu * normalsVertexs[i];
        }
    } else if (dynamic_cast<Rotate *>(tg) || dynamic_cast<Scale1 *>(tg)) {
        //primer pas
        TG *moureCentre = new Translate1(-centre);
        mat4 matriuC = moureCentre->getTG();




        for(int i = 0; i < vertexs.size(); i++) {
            vertexs[i] = matriuC * vertexs[i];
        }




        for (int i = 0; i < normalsVertexs.size(); i++) {
            normalsVertexs[i] = matriuC * normalsVertexs[i];
        }




        //Rotar
        mat4 rot = tg->getTG();




        for(int i = 0; i < vertexs.size(); i++) {
            vertexs[i] = rot * vertexs[i];
        }




        for (int i = 0; i < normalsVertexs.size(); i++) {
            normalsVertexs[i] = rot * normalsVertexs[i];
        }








        //Tornar
        TG *tornarCoords = new Translate1(centre);




        mat4 matBackToCoords = tornarCoords->getTG();




        for(int i = 0; i < vertexs.size(); i++) {
            vertexs[i] = matBackToCoords * vertexs[i];
        }




        for (int i = 0; i < normalsVertexs.size(); i++) {
            normalsVertexs[i] = matBackToCoords * normalsVertexs[i];
        }












    }




    make();
    draw();




}
close fullscreen
Login or Register to edit or fork this paste. It's free.