<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/105053/">http://git.reviewboard.kde.org/r/105053/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On May 31st, 2012, 9:53 p.m., <b>Bernhard Beschow</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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?</pre>
</blockquote>
</blockquote>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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.</pre>
<br />
<p>- marbledeveloper</p>
<br />
<p>On May 25th, 2012, 6:11 p.m., marbledeveloper marbledeveloper wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Marble and Torsten Rahn.</div>
<div>By marbledeveloper marbledeveloper.</div>
<p style="color: grey;"><i>Updated May 25, 2012, 6:11 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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);</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>src/lib/Projections/SphericalProjection.cpp <span style="color: grey">(45d7306)</span></li>
<li>src/lib/ViewportParams.h <span style="color: grey">(f6d2f82)</span></li>
<li>src/lib/ViewportParams.cpp <span style="color: grey">(fb92e05)</span></li>
<li>src/lib/geodata/data/GeoDataCoordinates.h <span style="color: grey">(f112384)</span></li>
<li>src/lib/geodata/data/GeoDataCoordinates.cpp <span style="color: grey">(8a44c5b)</span></li>
<li>src/lib/geodata/data/GeoDataCoordinates_p.h <span style="color: grey">(14c5164)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/105053/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>