Как правильно перемещать объект после вращения в opengl?

У меня есть плоскость. Мне нужно эту плоскость повернуть относительно некоторой точки(Например ее центра). Затем мне нужно ее передвинуть. В чем проблема? Проблема в том, что после поворота плоскости ее оси поворачиваются и перемещение работает некорректно. Что я делаю?

    void updateModelMatrix()
    {
        this->modelMatrix.setToIdentity();
        this->modelMatrix.translate(this->origin);
        this->modelMatrix.rotate(this->rotation.z(), QVector3D(0.f, 0.f, 1.f));
        this->modelMatrix.rotate(this->rotation.y(), QVector3D(0.f, 1.f, 0.f));
        this->modelMatrix.rotate(this->rotation.x(), QVector3D(1.f, 0.f, 0.f));
        this->modelMatrix.translate(this->position - this->origin);
    }


Вот проблемная операция

 this->modelMatrix.translate(this->position - this->origin);

Если я поверну плоскость по какой-то из осей(Например по Z на 90 градусов), то ее перемещение на мою желаемую позицию в сцене будет идти уже по осям повернутым на эти самые 90 градусов. Как мне повернуть плоскость но перемещать ее по глобальным осям?


Ответы (0 шт):