Girando um grupo de vetores

Estou tentando rotacionar um grupo de vetores que amostrei ao normal de um triângulo

Se isso estivesse correto, o hemisfério amostrado aleatoriamente se alinharia com o triângulo.

Atualmente, eu o gero no eixo Z e estou tentando girar todas as amostras para o normal do triângulo.

mas parece estar "apenas fora"

glm::quat getQuat(glm::vec3 v1, glm::vec3 v2)
{

    glm::quat myQuat;
    float dot = glm::dot(v1, v2);
    if (dot != 1)
    {
        glm::vec3 aa = glm::normalize(glm::cross(v1, v2));
        float w = sqrt(glm::length(v1)*glm::length(v1) * glm::length(v2)*glm::length(v2)) + dot;
        myQuat.x = aa.x;
        myQuat.y = aa.y;
        myQuat.z = aa.z;
        myQuat.w = w;
    }
    return myQuat;
}

Que eu puxei da parte inferior desta página:http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors

Então eu :

glm::vec3 zaxis = glm::normalize( glm::vec3(0, 0, 1) );  // hardcoded but test orginal axis
glm::vec3 n1 = glm::normalize( glm::cross((p2 - p1), (p3 - p1)) ); //normal
glm::quat myQuat = glm::normalize(getQuat(zaxis, n1));

glm::mat4 rotmat = glm::toMat4(myQuat); //make a rotation matrix
glm::vec4 n3 = rotmat * glm::vec4(n2,1); // current vector I am trying to rotate

questionAnswers(1)

yourAnswerToTheQuestion