2016-04-29 8 views
0

моя функция обновления добавляет вращение вокруг оси обзора (рулона), которая увеличивается с течением времени. Я хочу только изменить часть рыскания и высоты.Камера типа первого купола Quaterion

Это мое неправильное вычисление или это точность поплавка?

m_orientation - мой глобальный Quaterion, который удерживает окончательное вращение. Q - тип glm :: quat. В это GLM :: vec3

return [this](glm::vec2 ls, glm::vec2 rs, double dTime) { 
    auto rightVec = m_orientation * V(1, 0, 0); 
    Q q1 = glm::angleAxis(-rs.x * (float)dTime, V(0,1,0)); // yaw 
    Q q2 = glm::angleAxis(rs.y * (float)dTime, rightVec); // pitch 

    auto roll = glm::roll(m_orientation); 
    printf("%f\n", roll); 

    m_orientation = q1 * m_orientation; 
    m_orientation = q2 * m_orientation; 


    m_position += m_orientation * V(1, 0, 0) * ls.x * (float)dTime * sensitivity; //sidewards 
    m_position += m_orientation * V(0, 0, -1) * ls.y * (float)dTime * sensitivity; //forwards 
    buildViewMatrix(); 
}; 

ответ

0

решена с 2 изменяет

auto q2 = glm::angleAxis(rs.y * (float)dTime, V(1,0,0)); // pitch 
m_orientation = q1 * m_orientation * q2; 

 Смежные вопросы

  • Нет связанных вопросов^_^