From 1da72da16777ea9383c2b5951659a0adf6b21165 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 31 Aug 2004 14:21:46 +0000 Subject: [PATCH] Simplified the TrackMode options --- include/osgGA/NodeTrackerManipulator | 1 - src/osgGA/NodeTrackerManipulator.cpp | 52 ++++------------------------ 2 files changed, 6 insertions(+), 47 deletions(-) diff --git a/include/osgGA/NodeTrackerManipulator b/include/osgGA/NodeTrackerManipulator index 59d9063a3..1a0199e8a 100644 --- a/include/osgGA/NodeTrackerManipulator +++ b/include/osgGA/NodeTrackerManipulator @@ -36,7 +36,6 @@ class OSGGA_EXPORT NodeTrackerManipulator : public MatrixManipulator { NODE_CENTER, NODE_CENTER_AND_AZMIM_ROTATION, - NODE_CENTER_AND_AZMIM_ELEVATION_ROTATION, NODE_CENTER_AND_ROTATION, }; diff --git a/src/osgGA/NodeTrackerManipulator.cpp b/src/osgGA/NodeTrackerManipulator.cpp index 9e7c49b90..603eee931 100644 --- a/src/osgGA/NodeTrackerManipulator.cpp +++ b/src/osgGA/NodeTrackerManipulator.cpp @@ -32,7 +32,6 @@ NodeTrackerManipulator::NodeTrackerManipulator() { _trackerMode = NODE_CENTER_AND_ROTATION; _trackerMode = NODE_CENTER_AND_AZMIM_ROTATION; - _trackerMode = NODE_CENTER_AND_AZMIM_ELEVATION_ROTATION; _rotationMode = ELEVATION_AZIM; _distance = 1.0; @@ -358,39 +357,7 @@ void NodeTrackerManipulator::computeNodeCenterAndRotation(osg::Vec3d& nodeCenter else nodeCenter = osg::Vec3d(0.0f,0.0f,0.0f)*localToWorld; - // scale the matrix to get rid of any scales before we extract the rotation. - double sx = 1.0/sqrt(localToWorld(0,0)*localToWorld(0,0) + localToWorld(1,0)*localToWorld(1,0) + localToWorld(2,0)*localToWorld(2,0)); - double sy = 1.0/sqrt(localToWorld(0,1)*localToWorld(0,1) + localToWorld(1,1)*localToWorld(1,1) + localToWorld(2,1)*localToWorld(2,1)); - double sz = 1.0/sqrt(localToWorld(0,2)*localToWorld(0,2) + localToWorld(1,2)*localToWorld(1,2) + localToWorld(2,2)*localToWorld(2,2)); - localToWorld = localToWorld*osg::Matrixd::scale(sx,sy,sz); - -/* - Euler Code not in correct coordinate frame, just an experiment here. - - // Assuming the angles are in radians. - double heading, attitude, bank = 0; - if (localToWorld(0,1) > 0.998) - { // singularity at north pole - heading = atan2(localToWorld(2,0),localToWorld(2,2)); - attitude = osg::PI_2; - bank = 0; - } - else if (localToWorld(0,1) < -0.998) - { // singularity at south pole - heading = atan2(localToWorld(2,0),localToWorld(2,2)); - attitude = -osg::PI_2; - bank = 0; - } - else - { - heading = atan2(-localToWorld(0,2),localToWorld(0,0)); - bank = atan2(-localToWorld(2,1),localToWorld(1,1)); - attitude = asin(localToWorld(0,1)); - } - - osg::notify(osg::NOTICE)<<"heading = "<