[Marble-devel] Review Request: New reference system
marbledeveloper marbledeveloper
marbledeveloper at gmail.com
Sat Jun 2 09:18:21 UTC 2012
> On May 31, 2012, 9:53 p.m., Bernhard Beschow wrote:
> > Where exactly does our API prevent you from achieving your goal? Isn't it perhaps possible to compensate for the earth's rotation, like it is done in the StarsPlugin?
In which part/class of code can I use this compensation? Do you think that ViewportParams class is a good place to perform it?
I can use a code based in the code of StarsPlugin, but I need know the time elapsed in each draw update in order to calculate the new longitude of the current point, for this reason I think that turning MarbleClock into a singleton is a good approach.
- marbledeveloper
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/105053/#review14318
-----------------------------------------------------------
On May 25, 2012, 6:11 p.m., marbledeveloper marbledeveloper wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/105053/
> -----------------------------------------------------------
>
> (Updated May 25, 2012, 6:11 p.m.)
>
>
> Review request for Marble and Torsten Rahn.
>
>
> Description
> -------
>
> New reference system: changes in GeoDataCoordinates_p.h
> Three new attributes:
> - type: The type of the reference system to use. By default the value of the type is zero, this means that the reference system used is the typical reference system used for Marble.
> - m_clock: The marble clock to get the current time and to calculate the delta time.
> - m_initialTime: The initial time when the coordinate was created.
>
> New reference system: changes in GeoDataCoordinates.h
> Declarations of get and set methods for the three new attributes type, m_clock, m_initialTime.
>
> New reference system: changes in GeoDataCoordinates.cpp
> Implementation of get and set methods for the three new attributes type, m_clock, m_initialTime.
>
> New reference system: changes in SphericalProjection.cpp
> In SphericalProjection class are the methods that are executed whenever geodetic coordinates converted to screen coordinates. I have modified the method that has this prototipe: 'bool SphericalProjection::screenCoordinates( const GeoDataCoordinates &coordinates, const ViewportParams *viewport, qreal &x, qreal &y, bool &globeHidesPoint ) const'.
>
> New reference system: changes in ViewportParams.h
> I have modified ViewportParamsPrivate::setPlanetAxis() method to use another reference system to a specific kind of GeoDataCoordinates.
>
> New reference system: changes in ViewportParams.cpp
> I have modified ViewportParamsPrivate::setPlanetAxis() method to use another reference system to a specific kind of GeoDataCoordinates.
>
> Explanation and purpose:
> When the Earth turns the corresponding angle in each update of Marble clock, the points added turn the same angle too, it's the normal behaviour in Marble because the reference system rotates with the Earth globe.
>
> In this case, a point that has the next values for lon, lat and alt doesn't generate an orbit. lon, lat, alt = (0, 0, 20000 * 1000). The point is drawn always in the same point of space.
>
> I want that the points remain fixed in the space and they doesn't turn with the Earth.
>
> In this case a point that has the next values for lon, lat and alt generates an orbit. lon, lat, alt = (0, 0, 20000 * 1000). The point is drawn in differents points of space because the point drawn remain fixed in space.
>
> For example, we consider that the update interval of Marble clock is 10800 s, (10800 s is the time that the Earth use to turn 45º) and that a point with values lon, lat, alt = 0,0, 20000 * 1000 is added in each update of Marble clock. At first, when the time is 0 s, the point p is drawn in 0,0, 20000 * 1000, then, when the time is 10800 s, the point p is drawn in 0,0, 20000 * 1000 but the last point p' is in -45, 0, 20000 * 1000 respect the new point p.
>
>
> Diffs
> -----
>
> src/lib/Projections/SphericalProjection.cpp 45d7306
> src/lib/ViewportParams.h f6d2f82
> src/lib/ViewportParams.cpp fb92e05
> src/lib/geodata/data/GeoDataCoordinates.h f112384
> src/lib/geodata/data/GeoDataCoordinates.cpp 8a44c5b
> src/lib/geodata/data/GeoDataCoordinates_p.h 14c5164
>
> Diff: http://git.reviewboard.kde.org/r/105053/diff/
>
>
> Testing
> -------
>
> GeoDataCoordinates coordinates = GeoDataCoordinates( 0, 0, 20000.0 * 1000, GeoDataCoordinates::Degree );
> coordinates.setType( 1 ); // Inertial reference system
> coordinates.setClock( model()->clock() ) const; // The marble clock to get the current time and to calculate the delta time.
> coordinates.setInitialTime( model()->clock()->dateTime() ); // The initial time when the coordinate was created.
> m_track->addPoint(model()->clock()->dateTime(), coordinates);
>
>
> Thanks,
>
> marbledeveloper marbledeveloper
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/marble-devel/attachments/20120602/57e14302/attachment-0001.html>
More information about the Marble-devel
mailing list