Fix issue with roll and right-click drag. This fixes issue #1932

This commit is contained in:
Ylva Selling
2022-03-29 16:18:01 -04:00
parent 90e1b05b76
commit 7781c7c10d
2 changed files with 13 additions and 6 deletions

View File

@@ -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());
}
}

View File

@@ -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));
}