26 QDomElement elemCamera = doc.createElement( QStringLiteral(
"camera-pose" ) );
27 elemCamera.setAttribute( QStringLiteral(
"x" ), mCenterPoint.
x() );
28 elemCamera.setAttribute( QStringLiteral(
"y" ), mCenterPoint.
y() );
29 elemCamera.setAttribute( QStringLiteral(
"z" ), mCenterPoint.
z() );
30 elemCamera.setAttribute( QStringLiteral(
"dist" ), mDistanceFromCenterPoint );
31 elemCamera.setAttribute( QStringLiteral(
"pitch" ), mPitchAngle );
32 elemCamera.setAttribute( QStringLiteral(
"heading" ), mHeadingAngle );
38 const double x = elem.attribute( QStringLiteral(
"x" ) ).toDouble();
39 const double y = elem.attribute( QStringLiteral(
"y" ) ).toDouble();
40 const double z = elem.attribute( QStringLiteral(
"z" ) ).toDouble();
43 mDistanceFromCenterPoint = elem.attribute( QStringLiteral(
"dist" ) ).toFloat();
44 mPitchAngle = elem.attribute( QStringLiteral(
"pitch" ) ).toFloat();
45 mHeadingAngle = elem.attribute( QStringLiteral(
"heading" ) ).toFloat();
72 QVector3D cameraToCenter = q * QVector3D( 0, 0, -mDistanceFromCenterPoint );
73 camera->setUpVector( q * QVector3D( 0, 1, 0 ) );
74 camera->setPosition( mCenterPoint.
toVector3D() - cameraToCenter );
75 camera->setViewCenter( mCenterPoint.
toVector3D() );
88 QVector3D viewCenter = mCenterPoint.
toVector3D();
92 QQuaternion qLatLon = QQuaternion::fromAxisAndAngle( QVector3D( 0, 0, 1 ),
static_cast<float>( lon ) ) * QQuaternion::fromAxisAndAngle( QVector3D( 0, -1, 0 ),
static_cast<float>( lat ) );
95 QQuaternion qPitchHeading = QQuaternion::fromAxisAndAngle( QVector3D( 1, 0, 0 ), mHeadingAngle ) * QQuaternion::fromAxisAndAngle( QVector3D( 0, 1, 0 ), mPitchAngle );
98 QQuaternion q = qLatLon * qPitchHeading;
100 QVector3D cameraToCenter = ( q * QVector3D( -1, 0, 0 ) ) * mDistanceFromCenterPoint;
101 camera->setUpVector( q * QVector3D( 0, 0, 1 ) );
102 camera->setPosition( viewCenter - cameraToCenter );
103 camera->setViewCenter( viewCenter );