#James Monahan Recitation Extra Credit

from visual import *



scene1=display(title='unprimed frame', x=1, y=1, width=600, height=600,center=(0,0,0), range=(10,10,10),autoscale=0)
scene2=display(title='primed frame', x=1, y=1, width=600, height=600, center=(0,0,0), range=(10,10,10), autoscale=0)
c=[]
v=0.8
u=1. # The speed of the bullet (initially)
gamma=1/(sqrt(1-v**2))

scene1.select()

pointer=arrow(pos=(0,0,-1),axis=(10,0,0), shaftwidth=.01)
pointer=arrow(pos=(0,0,-1),axis=(-10,0,0), shaftwidth=.01)
label(pos=(-5,-1,1),text='space (lightseconds)')
pointer=arrow(pos=(0,0,-1), axis=(0,10,0), shaftwidth=.01)
pointer=arrow(pos=(0,0,-1), axis=(0,-10,0), shaftwidth=.01)
label(pos=(-2,-5,1),text='time (seconds)')

bspaceship=box(pos=(0.2,0,0),length=.2,width=.2,height=.4, color=color.red)
bspaceship.v=vector(0,1,0)
c.append(curve(color=color.red, pos=bspaceship.pos))

fspaceship=box(pos=(1.2,0,0),length=.2,width=.2,height=.4, color=color.blue)
fspaceship.v=vector(0,1,0)
c.append(curve(color=color.blue, pos=fspaceship.pos))

bullet=sphere(pos=vector(0.2,0,0),radius=.2,color=color.green)
bullet.v=vector(u,1,0)
c.append(curve(color=color.green, pos=bullet.pos))
               
student=box(pos=vector(0,0,0),length=.1,width=.2,height=.3,color=color.yellow)
student.v=vector(v,1,0)
c.append(curve(color=color.yellow, pos=student.pos))

scene2.select()

pointer=arrow(pos=(0,0,0),axis=(10,0,0), shaftwidth=.01)
pointer=arrow(pos=(0,0,0),axis=(-10,0,0), shaftwidth=.01)
label(pos=(-5,-1,1),text='space (lightseconds)')
pointer=arrow(pos=(0,0,0), axis=(0,10,0), shaftwidth=.01)
pointer=arrow(pos=(0,0,0), axis=(0,-10,0), shaftwidth=.01)
label(pos=(-2,-5,1),text='time (seconds)')

bspaceshipp=box(pos=(0.2,0,0),length=.2,width=.2,height=.4, color=color.red)
bspaceshipp.v=vector(0,1,0)
c.append(curve(color=color.red, pos=bspaceshipp.pos))

fspaceshipp=box(pos=(1.2,0,0),length=.2,width=.2,height=.4, color=color.blue)
fspaceshipp.v=vector(0,1,0)
c.append(curve(color=color.blue, pos=fspaceshipp.pos))

bulletp=sphere(pos=vector(0.2,0,0),radius=.2,color=color.green)
bulletp.v=vector(u,1,0)
c.append(curve(color=color.green, pos=bulletp.pos))
               
studentp=box(pos=vector(0,0,0),length=.5,width=.5,height=.3,color=color.yellow)
studentp.v=vector(v,1,0)
c.append(curve(color=color.yellow, pos=studentp.pos))



t=0
dt=0.01

while (t < 25) :
    rate(100)
    
    scene1.select()
    
    bspaceship.pos=bspaceship.pos+bspaceship.v*dt
    c[0].append(bspaceship.pos)
    fspaceship.pos=fspaceship.pos+fspaceship.v*dt
    c[1].append(fspaceship.pos)
    bullet.pos=bullet.pos+bullet.v*dt
    c[2].append(bullet.pos)
    student.pos=student.pos+student.v*dt
    c[3].append(student.pos)
    if (bullet.x > fspaceship.x) :
        bullet.v.x  = -bullet.v.x
    if (bullet.x < bspaceship.x) :
        bullet.v.x  = -bullet.v.x

    scene2.select()

    bspaceshipp.pos.x=bspaceship.pos.x*gamma-gamma*v*bspaceship.pos.y
    bspaceshipp.pos.y=gamma*bspaceship.pos.y-(v*gamma*bspaceship.pos.x)
    c[4].append(bspaceshipp.pos)
    fspaceshipp.pos.x=fspaceship.pos.x*gamma-gamma*v*fspaceship.pos.y
    fspaceshipp.pos.y=gamma*fspaceship.pos.y-(v*gamma*fspaceship.pos.x)
    c[5].append(fspaceshipp.pos)
    bulletp.pos.x=bullet.pos.x*gamma-gamma*v*bspaceship.pos.y
    bulletp.pos.y=gamma*bullet.pos.y-(v*gamma*bullet.pos.x)
    c[6].append(bulletp.pos)
    studentp.pos.x=student.pos.x*gamma-gamma*v*bspaceship.pos.y
    studentp.pos.y=gamma*student.pos.y-(v*gamma*student.pos.x)
    c[7].append(studentp.pos)

    if (bulletp.x > fspaceshipp.x) :
        bulletp.v.x  = -bulletp.v.x
    if (bulletp.x < bspaceshipp.x) :
        bulletp.v.x  = -bulletp.v.x
    t=t+dt
    
    
