Skip to content

Commit 9bebe0b

Browse files
author
pdavidc
committed
Repaired the AnimatedGlobe example. Closes #42.
1 parent 93f61c5 commit 9bebe0b

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

src/gov/nasa/worldwindx/examples/AnimatedGlobe.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66

77
package gov.nasa.worldwindx.examples;
88

9-
import com.jogamp.opengl.util.Animator;
9+
import com.jogamp.opengl.util.*;
1010
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
1111
import gov.nasa.worldwind.event.*;
12-
import gov.nasa.worldwind.geom.Position;
12+
import gov.nasa.worldwind.geom.*;
13+
14+
import javax.media.opengl.GLAnimatorControl;
1315

1416
/**
1517
* Shows how to use a JOGL Animator to animate in World Wind
@@ -21,14 +23,13 @@ public class AnimatedGlobe extends ApplicationTemplate
2123
{
2224
public static class AppFrame extends ApplicationTemplate.AppFrame implements RenderingListener
2325
{
24-
Animator animator;
25-
double rotationRate = 100; // degrees per second
26-
long lastTime;
27-
Position eyePosition = Position.fromDegrees(0, 0, 20000000);
26+
protected GLAnimatorControl animator;
27+
protected double rotationDegreesPerSecond = 40;
28+
protected long lastTime;
29+
protected Position eyePosition = Position.fromDegrees(0, 0, 20000000);
2830

2931
public AppFrame()
3032
{
31-
3233
// Reduce the frequency at which terrain is regenerated.
3334
getWwd().getModel().getGlobe().getTessellator().setUpdateFrequency(5000);
3435

@@ -38,8 +39,7 @@ public AppFrame()
3839

3940
// Use a JOGL Animator to spin the globe
4041
lastTime = System.currentTimeMillis();
41-
animator = new Animator();
42-
animator.add((WorldWindowGLCanvas) getWwd());
42+
animator = new FPSAnimator((WorldWindowGLCanvas) getWwd(), 60 /*frames per second*/);
4343
animator.start();
4444
}
4545

@@ -53,18 +53,17 @@ public void stageChanged(RenderingEvent event)
5353
return;
5454

5555
long now = System.currentTimeMillis();
56-
double d = rotationRate * (now - lastTime) * 1.0e-3;
56+
double elapsedSeconds = (now - lastTime) * 1.0e-3;;
57+
double rotationDegrees = rotationDegreesPerSecond * elapsedSeconds;
5758
lastTime = now;
5859

59-
double longitude = eyePosition.getLongitude().degrees;
60-
longitude += d;
61-
if (longitude > 180)
62-
longitude = -180 + (180 - longitude);
60+
double lat = eyePosition.getLatitude().degrees;
61+
double lon = Angle.normalizedDegreesLongitude(eyePosition.getLongitude().degrees + rotationDegrees);
62+
double alt = eyePosition.getAltitude();
6363

64-
eyePosition = Position.fromDegrees(eyePosition.getLatitude().degrees, longitude,
65-
eyePosition.getAltitude());
66-
Position groundPos = new Position(eyePosition.getLatitude(), eyePosition.getLongitude(), 0);
67-
getWwd().getView().setOrientation(eyePosition, groundPos);
64+
eyePosition = Position.fromDegrees(lat, lon, alt);
65+
getWwd().getView().stopAnimations();
66+
getWwd().getView().setEyePosition(eyePosition);
6867
}
6968
}
7069
}

0 commit comments

Comments
 (0)