001    package test;
002    
003    import java.awt.Container;
004    
005    import javax.media.opengl.GLCanvas;
006    import javax.media.opengl.GLCapabilities;
007    import javax.media.opengl.GLEventListener;
008    import javax.swing.JFrame;
009    
010    import physics3d.Angle;
011    import physics3d.GamePhysics;
012    import physics3d.Vect3;
013    
014    import rendering.Renderer;
015    
016    import components.Ball;
017    import components.GameSettings;
018    import components.GameSpace;
019    import components.SquareBumper;
020    import components.TriangleBumper;
021    
022    public class BouncingOffWalls extends JFrame implements Runnable {
023            static final long serialVersionUID = 1495;
024            
025            //GameSpace
026            private GameSpace gs;
027            private Ball b; //shall bounce!... maybe
028            
029            //rendering stuff
030            private final GLCanvas canvasPanel;
031            private final Renderer myRenderer;
032            
033            public BouncingOffWalls() {
034                    super("Bouncing Off Walls");
035                     
036                    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
037                    this.setResizable(false);
038                    this.setSize(600, 600);
039                
040                    //GameSpace
041                    gs = new GameSpace(new GameSettings());
042                    b = new Ball(Vect3.ZERO, Vect3.ZERO, "bouncing ball", gs);
043                    gs.add(b);
044                    b.setCenter(new Vect3(10, 10, 5));  // start ball at 2.5 in y direction
045                    b.setVelocity(new Vect3(40, 50, 10));
046                    gs.getSettings().setGravity(new Vect3(0, 100, 0)); //with an iron fist
047                    gs.getSettings().setMu2(0.5); //some drag
048                    
049                    //renderer
050                    canvasPanel = new GLCanvas(new GLCapabilities());
051                    myRenderer = new Renderer(gs);
052                    canvasPanel.addGLEventListener(myRenderer);
053                    canvasPanel.setSize(600, 600);
054                    
055                    Container mainPane;
056                    mainPane = getContentPane();
057                    mainPane.add(canvasPanel);
058            }
059            
060            public void run() {
061                    for (int f = 0; f < 120; f++) {
062                            canvasPanel.display();
063                            try {
064                                    Thread.sleep(33);
065                            } catch (InterruptedException e) {
066                                    e.printStackTrace();
067                            }
068                            gs.stepFrame();
069                            //\\System.outprintln("frame +"+f+": p="+b.getPosition()+", v="+b.getVelocity());
070                    } //120 frames
071            }
072            
073            /**
074             * @param args
075             */
076            public static void main(String[] args) {
077                    BouncingOffWalls myGUI = new BouncingOffWalls();
078                    myGUI.setVisible(true);
079                    myGUI.run();
080            }
081    
082    }