source: proiecte/SolarSim/Java/SolarSim/src/solarsim/renderer/MyCanvas.java @ 152

Last change on this file since 152 was 152, checked in by (none), 14 years ago
File size: 1.5 KB
Line 
1package solarsim.renderer;
2
3import java.awt.Canvas;
4import java.awt.Graphics;
5import java.util.LinkedList;
6import solarsim.common.Particle;
7import solarsim.common.State;
8import solarsim.common.Vector;
9
10class MyCanvas extends Canvas {
11
12    private final LinkedList<State> states;
13    MyCanvas() {
14        super();
15        this.setSize(800, 600);
16        states = new LinkedList<State>();
17    }
18
19    void drawState(State s) {
20        synchronized( states ) {
21            if( states.size() == RenderConstants.MAX_STATES ) {
22                states.removeLast();
23            }
24            states.addFirst(s);
25        }
26        this.repaint();
27    }
28
29    @Override
30    public void paint(Graphics g) {
31        g.translate(400, 300);
32        g.drawLine(-300, -300, 300, 300);
33        g.drawLine(-300, 300, 300, -300);
34        g.drawLine(-300, -300, -300, 300);
35        g.drawLine(300, -300, 300, 300);
36        g.drawLine(-400, 0, 400, 0);
37        g.drawLine(0, -300, 0, 300);
38        synchronized(states) {
39            for( State s : states ) {
40                for( Particle p : s.getParticles() ) {
41                    Vector r = p.getPosition();
42                    int dx = +(int)(r.x/RenderConstants.SCALE_FACTOR*300);
43                    int dy = -(int)(r.y/RenderConstants.SCALE_FACTOR*300);
44                    g.translate(dx, dy);
45                    g.fillOval(-1, -1, 3, 3);
46                    g.translate(-dx, -dy);
47                }
48            }
49        }
50        g.translate(-400, -300);
51    }
52
53}
Note: See TracBrowser for help on using the repository browser.