代码简单,完全是算法的总结和线程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package  sun;
import  java.awt.Color;
import  java.awt.Frame;
import  java.awt.Graphics;
import  java.awt.Image;
import  java.awt.Toolkit;
import  java.awt.event.WindowAdapter;
import  java.awt.event.WindowEvent;
/**
  *
  *@author huyongjian Oracle(Compus Solution Group)
  * @Date  2013-7-22
  * @version 2.0
  * @since JDK1.6(建议)
    Copy Right Information    COMPUS SOLUTION GROUP
    IDE:Eclipse
    class:SolarSystem 太阳系运动轨迹
  */
public  class  SolarSystem  extends  Frame{
                                                                          
     double  x , x1 =  200 ,x2 =  200 ,x3 =  200 ,x4 =  200 ,x5 =  200 ,x6 =  200 ,x7 =  200 ,x8 =  200 ;
     double  y , y1 =  200 ,y2 =  200 ,y3 =  200 ,y4 =  200 ,y5 =  200 ,y6 =  200 ,y7 =  200 ,y8 =  200 ;
     double  t =  0 ,t1 =  0 ,t2 =  0 ,t3 =  0 ,t4 =  0 ,t5 =  0 ,t6 =  0 ,t7 =  0 ,t8 =  0 ;
     private  Image offScreenImage =  null ;
     void  loadFrame(){
         this .setSize( 900 , 900 );
         this .setLocation( 50 , 50 );
         this .setTitle( "太阳系" );
         this .addWindowListener( new  WindowAdapter(){
             public  void  windowClosing(WindowEvent e) {
                 System.exit( 0 );
             }
         });
         this .setVisible( true );
//      this.setColor.black);
          new  PaintThread().start();
     }
     public  void  update(Graphics g) {
         if (offScreenImage ==  null )
             offScreenImage =  this .createImage( 900 900 );
                                                                              
         Graphics gOff = offScreenImage.getGraphics();
         Color oldColor = gOff.getColor();
         gOff.setColor(Color.GREEN);
         gOff.fillRect( 0 0 900 900 );
         gOff.setColor(oldColor);
         paint(gOff);
         g.drawImage(offScreenImage,  0 0 null );
     }
                                                                          
     Image sun = Toolkit.getDefaultToolkit().getImage( "images/sun.jpg" );
     Image bg = Toolkit.getDefaultToolkit().getImage( "images/bg.jpg" );
     Image mercury = Toolkit.getDefaultToolkit().getImage( "images/Mercury.jpg" );
     Image venus = Toolkit.getDefaultToolkit().getImage( "images/Venus.jpg" );
     Image earth = Toolkit.getDefaultToolkit().getImage( "images/Earth.jpg" );
     Image mars = Toolkit.getDefaultToolkit().getImage( "images/Mars.jpg" );
     Image jupiter = Toolkit.getDefaultToolkit().getImage( "images/Jupiter.jpg" );
     Image saturn = Toolkit.getDefaultToolkit().getImage( "images/Saturn.jpg" );
     Image uranus = Toolkit.getDefaultToolkit().getImage( "images/Uranus.jpg" );
     Image neptune = Toolkit.getDefaultToolkit().getImage( "images/Neptune.jpg" );
     Image moon = Toolkit.getDefaultToolkit().getImage( "images/moon.jpg" );
                                                                          
     public  void  paint(Graphics g){
         g.setColor(Color.blue);
         g.drawImage(bg ,  0  0  null );
         g.drawImage(sun ,  435  435  null );
         g.drawOval( 401 415 88 60 );
         g.drawOval( 375 395 140 100 );
         g.drawOval( 335 365 220 160 );
         g.drawOval( 285 335 320 220 );
         g.drawOval( 155 275 580 340 );
         g.drawOval( 120 245 650 400 );
         g.drawOval( 80 210 730 470 );
         g.drawOval( 10 165 870 560 );
                                                                              
         t1 = t1 + Math.PI /  8.8 ;          //公转周期为88天
         t2 = t2 + Math.PI /  22.5 ;
         t3 = t3 + Math.PI /  36.5 ;
         t = t + Math.PI /  0.1 ;
         t4 = t4 + Math.PI /  68.7 ;
         t5 = t5 + Math.PI /  432.9 ;
         t6 = t6 + Math.PI /  1076.8 ;
         t7 = t7 + Math.PI /  3066.0 ;
         t8 = t8 + Math.PI /  6015.2 ;
                                                                              
         g.drawImage(mercury , ( int )x1 ,( int )y1,  null );
         x1 =  440  44  * Math.cos(t1);
         y1 =  440  30  * Math.sin(t1);
         g.drawImage(venus , ( int )x2 ,( int )y2,  null );
         x2 =  440  70  * Math.cos(t2);
         y2 =  440  50  * Math.sin(t2);
         g.drawImage(earth , ( int )x3 ,( int )y3,  null );
         x3 =  440  110  * Math.cos(t3);
         y3 =  440  80  * Math.sin(t3);
         g.drawImage(moon , ( int )x ,( int )y,  null );
         x = x3 +  15  * Math.cos(t1);
         y = y3 +  15  * Math.sin(t1);
         g.drawImage(mars , ( int )x4 ,( int )y4,  null );
         x4 =  440  160  * Math.cos(t4);
         y4 =  440  110  * Math.sin(t4);
         g.drawImage(jupiter , ( int )x5 ,( int )y5,  null );
         x5 =  435  290  * Math.cos(t5);
         y5 =  435  170  * Math.sin(t5);
         g.drawImage(saturn , ( int )x6 ,( int )y6,  null );
         x6 =  428  325  * Math.cos(t6);
         y6 =  428  200  * Math.sin(t6);
         g.drawImage(uranus , ( int )x7 ,( int )y7,  null );
         x7 =  435  365  * Math.cos(t7);
         y7 =  435  235  * Math.sin(t7);
         g.drawImage(neptune , ( int )x8 ,( int )y8,  null );
         x8 =  435  435  * Math.cos(t8);
         y8 =  435  280  * Math.sin(t8);
     }
     public  static  void  main(String[] args){
         SolarSystem ball =  new  SolarSystem();
         ball.loadFrame();
     }
                                                                          
     private  class  PaintThread  extends  Thread{
         public  void  run(){
             while ( true ){
                 repaint();
                 try  {
                     Thread.sleep( 40 );
                 catch  (InterruptedException e) {
                     e.printStackTrace();
                 }
             }
         }
     }
}

141458192.png