Повернуть карту в мраморе KDE

Я пытаюсь повернуть сферическую проекцию с помощью мыши и изменить направление (северный полюс). Если курс = 0 (обычное состояние), и я перетаскиваю землю вниз, земля вращается позади направления курсора. Например, если вы вращаете землю вдоль меридиана, то вы видите Земля вращается вниз

И, если установить курс (изменить угол северного полюса) и повернуть Землю, то Земля также будет вращаться вдоль меридиана, хотя движение курсора было направлено вниз. Земля вращается с курсом

Код, ответственный за такой поворот:

const Quaternion rotation = Quaternion::fromEuler( 0, 0, MarbleInputHandler::d->m_marblePresenter->map()->heading() * DEG2RAD );
Quaternion quat = Quaternion::fromSpherical( - M_PI/2 * deltax / radius, + M_PI/2 * deltay / radius );
quat.rotateAroundAxis( rotation );
qreal lon, lat;
quat.getSpherical( lon, lat );
const qreal posLon = d->m_leftPressedLon + RAD2DEG * lon;
const qreal posLat = d->m_leftPressedLat + RAD2DEG * lat;
MarbleInputHandler::d->m_marblePresenter->centerOn(posLon, posLat);
if (MarbleInputHandler::d->m_inertialEarthRotation)
{
    d->m_kineticSpinning.setPosition(posLon, posLat);
}

Мне нужно, чтобы при любом значении северного полюса вращение Земли происходило после курсора мыши.

Как это исправить или какую формулу применить для поворота?

0 ответов

Другие вопросы по тегам