Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- ViewportParams_original.cpp 2011-12-20 20:19:12.000000000 +0100
- +++ ViewportParams.cpp 2012-05-23 19:51:56.557246800 +0200
- @@ -22,7 +22,9 @@
- #include "SphericalProjection.h"
- #include "EquirectProjection.h"
- #include "MercatorProjection.h"
- +//#include <MarbleClock.h>
- +#define earthAngularSpeed 0.004167
- namespace Marble
- {
- @@ -32,7 +34,7 @@
- public:
- ViewportParamsPrivate();
- - void setPlanetAxis( const Quaternion &newAxis );
- + void setPlanetAxis( const Quaternion &newAxis);
- // These two go together. m_currentProjection points to one of
- // the static Projection classes at the bottom.
- @@ -43,7 +45,9 @@
- qreal m_centerLongitude;
- qreal m_centerLatitude;
- Quaternion m_planetAxis; // Position, coded in a quaternion
- + Quaternion m_planetInertialAxis; // Position, coded in a quaternion
- mutable matrix m_planetAxisMatrix;
- + mutable matrix m_planetInertialAxisMatrix;
- int m_radius; // Zoom level (pixels / globe radius)
- qreal m_angularResolution;
- @@ -59,6 +63,9 @@
- GeoDataCoordinates m_focusPoint;
- bool m_hasFocusPoint;
- + //MarbleClock* m_clock;
- + mutable double m_time;
- + mutable bool m_old;
- };
- @@ -68,15 +75,21 @@
- m_centerLongitude( 0 ),
- m_centerLatitude( 0 ),
- m_planetAxis( 1.0, 0.0, 0.0, 0.0 ), // Default view
- + m_planetInertialAxis( 1.0, 0.0, 0.0, 0.0 ),
- m_planetAxisMatrix(),
- + m_planetInertialAxisMatrix(),
- m_radius( 2000 ),
- m_angularResolution( 0.25 * M_PI / fabs( (qreal)( m_radius ) ) ),
- m_size( 100, 100 ),
- m_dirtyBox( true ),
- m_viewLatLonAltBox(),
- - m_hasFocusPoint(false)
- + m_hasFocusPoint(false),
- + //m_clock( 0 ),
- + m_time( 0 ),
- + m_old( false )
- {
- m_planetAxis.inverse().toMatrix( m_planetAxisMatrix );
- + m_planetInertialAxis.inverse().toMatrix( m_planetInertialAxisMatrix );
- }
- @@ -248,13 +261,44 @@
- m_dirtyBox = true;
- m_planetAxis = newAxis;
- m_planetAxis.inverse().toMatrix( m_planetAxisMatrix );
- + qreal lon;
- + qreal lat;
- + m_planetInertialAxis.getSpherical(lon, lat); // takes the normal axis and retrieve lon and lat from it
- + // Enter your lat-lon-Fixed-To-Inertial coordinate conversion code here and apply the new values to lat and lon
- + if (m_old){
- + //Qt::DateFormat format = Qt::ISODate;
- + //QString dateString("2000-01-01T00:00:00");
- + //QDateTime someFixedTimeBack = QDateTime::fromString(dateString, format);
- + //double timeDelta = m_clock->dateTime().toTime_t() - someFixedTimeBack.toTime_t();
- + lon = lon - (earthAngularSpeed * m_time);
- + }
- + Quaternion axis = Quaternion::fromEuler( -lat, lon, 0.0 );
- + axis.normalize();
- + m_planetInertialAxis = axis;
- +}
- +
- +void ViewportParams::setTime(const double time) const
- +{
- + d->m_time = time;
- }
- -const matrix * ViewportParams::planetAxisMatrix() const
- +void ViewportParams::setOld(const bool old) const
- {
- - return &d->m_planetAxisMatrix;
- + d->m_old = old;
- }
- +const matrix * ViewportParams::planetAxisMatrix(const int type) const
- +{
- + if (!type)
- + return &d->m_planetAxisMatrix;
- + return &d->m_planetInertialAxisMatrix;
- +}
- +
- +/*const matrix * ViewportParams::planetInertialAxisMatrix() const
- +{
- + return &d->m_planetInertialAxisMatrix;
- +}*/
- +
- int ViewportParams::width() const
- {
- return d->m_size.width();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement