28 QDomElement elemCamera = doc.createElement( u
"camera-pose"_s );
29 elemCamera.setAttribute( u
"x"_s, mCenterPoint.x() );
30 elemCamera.setAttribute( u
"y"_s, mCenterPoint.y() );
31 elemCamera.setAttribute( u
"z"_s, mCenterPoint.z() );
32 elemCamera.setAttribute( u
"dist"_s, mDistanceFromCenterPoint );
33 elemCamera.setAttribute( u
"pitch"_s, mPitchAngle );
34 elemCamera.setAttribute( u
"heading"_s, mHeadingAngle );
74 QVector3D cameraToCenter = q * QVector3D( 0, 0, -mDistanceFromCenterPoint );
75 camera->setUpVector( q * QVector3D( 0, 1, 0 ) );
76 camera->setPosition( mCenterPoint.toVector3D() - cameraToCenter );
77 camera->setViewCenter( mCenterPoint.toVector3D() );
90 QVector3D viewCenter = mCenterPoint.toVector3D();
94 QQuaternion qLatLon = QQuaternion::fromAxisAndAngle( QVector3D( 0, 0, 1 ),
static_cast<float>( lon ) ) * QQuaternion::fromAxisAndAngle( QVector3D( 0, -1, 0 ),
static_cast<float>( lat ) );
97 QQuaternion qPitchHeading = QQuaternion::fromAxisAndAngle( QVector3D( 1, 0, 0 ), mHeadingAngle ) * QQuaternion::fromAxisAndAngle( QVector3D( 0, 1, 0 ), mPitchAngle );
100 QQuaternion q = qLatLon * qPitchHeading;
102 QVector3D cameraToCenter = ( q * QVector3D( -1, 0, 0 ) ) * mDistanceFromCenterPoint;
103 camera->setUpVector( q * QVector3D( 0, 0, 1 ) );
104 camera->setPosition( viewCenter - cameraToCenter );
105 camera->setViewCenter( viewCenter );