66
77package gov .nasa .worldwindx .examples ;
88
9- import com .jogamp .opengl .util .Animator ;
9+ import com .jogamp .opengl .util .* ;
1010import gov .nasa .worldwind .awt .WorldWindowGLCanvas ;
1111import 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