I think glm::angleAxis(glm::atan(direction.x, direction.y) needs some explanation too ;)