mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-23 05:19:18 -06:00
Fix issue with roll and right-click drag. This fixes issue #1932
This commit is contained in:
@@ -136,11 +136,18 @@ void TargetBrowserPair::synchronizeAim() {
|
||||
// target, send the locked coordinates to wwt
|
||||
glm::dvec2 aim = targetDirectionEquatorial();
|
||||
_browser->setEquatorialAim(aim);
|
||||
glm::dvec3 direction = _targetNode->worldPosition() -
|
||||
global::navigationHandler->camera()->positionVec3();
|
||||
glm::dvec3 normalized = glm::normalize(direction);
|
||||
glm::dvec3 up = global::navigationHandler->camera()->lookUpVectorWorldSpace();
|
||||
_browser->setTargetRoll(skybrowser::targetRoll(up, normalized));
|
||||
glm::dvec3 normal = glm::normalize(
|
||||
_targetNode->worldPosition() -
|
||||
global::navigationHandler->camera()->positionVec3()
|
||||
);
|
||||
glm::dvec3 right = glm::normalize(
|
||||
glm::cross(
|
||||
global::navigationHandler->camera()->lookUpVectorWorldSpace(),
|
||||
normal
|
||||
)
|
||||
);
|
||||
glm::dvec3 up = glm::normalize(glm::cross(normal, right));
|
||||
_browser->setTargetRoll(skybrowser::targetRoll(up, normal));
|
||||
_targetRenderable->setVerticalFov(_browser->verticalFov());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ double targetRoll(const glm::dvec3& up, const glm::dvec3& forward) {
|
||||
|
||||
glm::dvec3 crossUpNorth = glm::cross(upJ2000, NorthPole);
|
||||
double dotNorthUp = glm::dot(NorthPole, upJ2000);
|
||||
double dotCrossUpNorthForward = glm::dot(upJ2000, forwardJ2000);
|
||||
double dotCrossUpNorthForward = glm::dot(crossUpNorth, forwardJ2000);
|
||||
|
||||
return glm::degrees(atan2(dotCrossUpNorthForward, dotNorthUp));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user