Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.util.ArrayList;
- import java.awt.*;
- import java.awt.image.BufferStrategy;
- import static java.lang.Math.*;
- import java.awt.event.*;
- class Spacetime {
- public static void main(String[] args) {
- new main();
- }
- }
- class main {
- JFrame jFrame;
- Canvas canvas1,canvas2;
- BufferStrategy strategyCanvas1,strategyCanvas2;
- Graphics2D g2Dcanvas1, g2Dcanvas2;
- ArrayList<Event> eventsArraylist = new ArrayList<Event>();
- double gamma,vrel,v_rel;
- Font stringFont = new Font( "SansSerif", Font.BOLD, 14 );
- Font stringFont2 = new Font( "SansSerif", Font.PLAIN, 10 );
- ActionListener actionListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String str=e.getActionCommand();
- if (str.equals("start")){
- mainloop();
- }
- }
- };
- public main() {
- createFrameAndCanvases();
- generateEvents();
- g2Dcanvas1.setStroke(new BasicStroke(3));
- g2Dcanvas2.setStroke(new BasicStroke(3));
- g2Dcanvas1.setColor(Color.WHITE);
- g2Dcanvas2.setColor(Color.WHITE);
- g2Dcanvas1.fillRect(0,0,501,501);
- g2Dcanvas2.fillRect(0,0,501,501);
- plotDiagrams();
- plotLightbeams();
- plotEvents(v_rel);
- strategyCanvas2.show();
- strategyCanvas1.show();
- }
- public void mainloop(){
- for (v_rel=0;v_rel<=0.5;v_rel+=0.001){
- plotDiagrams();
- plotLightbeams();
- plotEvents(v_rel);
- try{Thread.sleep(30);} catch (Exception e){};
- strategyCanvas2.show();
- strategyCanvas1.show();
- g2Dcanvas1.setColor(Color.WHITE);
- g2Dcanvas2.setColor(Color.WHITE);
- g2Dcanvas1.fillRect(0,0,501,501);
- g2Dcanvas2.fillRect(0,0,501,501);
- }
- }
- public void plotLightbeams() {
- g2Dcanvas1.setColor(Color.YELLOW);
- g2Dcanvas2.setColor(Color.YELLOW);
- g2Dcanvas1.drawLine(0,0,501,501);
- g2Dcanvas1.drawLine(0,501,501,0);
- g2Dcanvas2.drawLine(0,0,501,501);
- g2Dcanvas2.drawLine(0,501,501,0);
- }
- public void plotEvents(double v_rel){
- g2Dcanvas1.setFont(stringFont);
- g2Dcanvas2.setFont(stringFont);
- double x,t,x_p,t_p;
- vrel = v_rel;
- gamma = 1/(sqrt(1-pow(vrel,2))); // c^2 = 1 when vrel is multiple of c
- for (int i=0; i<eventsArraylist.size();i++){
- x=eventsArraylist.get(i).xPosInLightSeconds;
- t=eventsArraylist.get(i).timeInSeconds;
- g2Dcanvas1.setColor(Color.RED);
- if (x==8 && t==4) { g2Dcanvas1.setColor(Color.GREEN);}
- if (x==4 && t==8) { g2Dcanvas1.setColor(Color.GREEN);}
- if (x==0 ) { g2Dcanvas1.setColor(Color.BLUE);}
- g2Dcanvas1.drawString(Integer.toString((int)t),(int)(x*25+251-4),(int)(251+4-t*25));
- x_p = gamma*(x - vrel * t); // c^2 = 1 when vrel is multiple of c so no need for /c^2 in the formula
- t_p = gamma*(t - (vrel*x));
- g2Dcanvas2.setColor(Color.RED);
- if (x==8 && t==4) { g2Dcanvas2.setColor(Color.GREEN);}
- if (x==4 && t==8) { g2Dcanvas2.setColor(Color.GREEN);}
- if (x==0 ) { g2Dcanvas2.setColor(Color.BLUE);}
- g2Dcanvas2.drawString(Integer.toString((int)t),(int)(x_p*25+251-4),(int)(251+4-t_p*25));
- }
- }
- public void createFrameAndCanvases(){
- jFrame = new JFrame();
- jFrame.setLayout(null);
- jFrame.setSize(1280,720);
- jFrame.setResizable(false);
- // jFrame.setIgnoreRepaint(true);
- JButton button1 = new JButton("start");
- button1.setBounds(100,530,130,130);
- button1.addActionListener(actionListener);
- button1.setActionCommand("start");
- jFrame.add(button1);
- canvas1 = new Canvas();
- canvas1.setSize(501,501);
- canvas1.setLocation(75,0);
- canvas1.setIgnoreRepaint(true);
- canvas1.setBackground(new Color(222,222,222));
- jFrame.add(canvas1);
- canvas2 = new Canvas();
- canvas2.setSize(501,501);
- canvas2.setLocation(1280-501-75,0);
- canvas2.setIgnoreRepaint(true);
- canvas2.setBackground(new Color(222,222,222));
- jFrame.add(canvas2);
- jFrame.setVisible(true);
- canvas1.createBufferStrategy(2);
- canvas2.createBufferStrategy(2);
- strategyCanvas1 = canvas1.getBufferStrategy();
- strategyCanvas2 = canvas2.getBufferStrategy();
- g2Dcanvas1 = (Graphics2D) strategyCanvas1.getDrawGraphics();
- g2Dcanvas2 = (Graphics2D) strategyCanvas2.getDrawGraphics();
- }
- public void plotDiagrams() {
- g2Dcanvas1.setFont(stringFont2);
- g2Dcanvas2.setFont(stringFont2);
- g2Dcanvas1.setColor(Color.BLACK);
- g2Dcanvas2.setColor(Color.BLACK);
- g2Dcanvas1.drawLine(0,250,500,250);
- g2Dcanvas1.drawLine(250,0,250,500);
- g2Dcanvas2.drawLine(0,250,500,250);
- g2Dcanvas2.drawLine(250,0,250,500);
- int x,t;
- for (x=0; x<21;x++){
- if (x!=10) {
- g2Dcanvas1.drawLine(x*(500/20),245, x*(500/20),255);
- g2Dcanvas1.drawString(Integer.toString(x-10),x*(500/20)-5,268);
- g2Dcanvas2.drawLine(x*(500/20),245, x*(500/20),255);
- g2Dcanvas2.drawString(Integer.toString(x-10),x*(500/20)-5,268);
- }
- }
- for (t=0; t<21;t++){
- if (t!=10) {
- g2Dcanvas1.drawLine(245,t*(500/20), 255,t*(500/20));
- g2Dcanvas1.drawString(Integer.toString(10-t),258,t*(500/20)+5);
- g2Dcanvas2.drawLine(245,t*(500/20), 255,t*(500/20));
- g2Dcanvas2.drawString(Integer.toString(10-t),258,t*(500/20)+5);
- }
- }
- }
- public void generateEvents(){
- int x,t;
- for (x=-10; x<11;x++){
- for (t=-10; t<11;t++){
- eventsArraylist.add( new Event(x,t));
- }
- }
- }
- class Event {
- double xPosInLightSeconds;
- double timeInSeconds;
- public Event(int x, int t) {
- xPosInLightSeconds = x;
- timeInSeconds = t;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement