OPTION ANGLE DEGREES PRINT PRINT "< アインシュタインの楕円球空間 >" PRINT " 光の6割の速さで移動している観察者が見た" PRINT " 球の中心で一瞬放たれた光が" PRINT " 球の内面で反射して中心に帰ってくるまでの光景" PRINT " ( 球は相対的な移動方向につぶれている )" PRINT LET X1=3 LET Y1=0 LET X3=-3 LET Y3=0 LET X2=5 LET Y2=0 LET W1=ATN((Y2-Y1)/(X2-X1)) LET W2=ATN((Y3-Y2)/(X3-X2)) DEF zx1=h*COS(W1)+X1 DEF zy2=h*SIN(W1)+Y1 DEF zx3=-1*(h-2)*COS(W2)+X2 DEF zy4=-1*(h-2)*SIN(W2)+Y2 LET X12=0 LET Y12=4 LET W11=ATN((Y12-Y1)/(X12-X1)) LET W12=ATN((Y3-Y12)/(X3-X12)) DEF zx11=-1*h*COS(W11)+X1 DEF zy12=-1*h*SIN(W11)+Y1 DEF zx13=-1*(h-5)*COS(W12)+X12 DEF zy14=-1*(h-5)*SIN(W12)+Y12 LET t=30 LET X22=5*COS(t) LET Y22=4*SIN(t) LET h20=SQR ((5*COS(t)-3)^2+(4*SIN(t))^2) LET W21=ATN((Y22-Y1)/(X22-X1)) LET W22=ATN((Y3-Y22)/(X3-X22)) DEF zx21=h*COS(W21)+X1 DEF zy22=h*SIN(W21)+Y1 DEF zx23=-1*(h-h20)*COS(W22)+X22 DEF zy24=-1*(h-h20)*SIN(W22)+Y22 LET t=60 LET X32=5*COS(t) LET Y32=4*SIN(t) LET h30=SQR ((5*COS(t)-3)^2+(4*SIN(t))^2) LET W31=ATN((Y32-Y1)/(X32-X1)) LET W32=ATN((Y3-Y32)/(X3-X32)) DEF zx31=-1*h*COS(W31)+X1 DEF zy32=-1*h*SIN(W31)+Y1 DEF zx33=-1*(h-h30)*COS(W32)+X32 DEF zy34=-1*(h-h30)*SIN(W32)+Y32 LET t=120 LET X42=5*COS(t) LET Y42=4*SIN(t) LET h40=SQR ((5*COS(t)-3)^2+(4*SIN(t))^2) LET W41=ATN((Y42-Y1)/(X42-X1)) LET W42=ATN((Y3-Y42)/(X3-X42)) DEF zx41=-1*h*COS(W41)+X1 DEF zy42=-1*h*SIN(W41)+Y1 DEF zx43=-1*(h-h40)*COS(W42)+X42 DEF zy44=-1*(h-h40)*SIN(W42)+Y42 LET t=150 LET X52=5*COS(t) LET Y52=4*SIN(t) LET h50=SQR ((5*COS(t)-3)^2+(4*SIN(t))^2) LET W51=ATN((Y52-Y1)/(X52-X1)) LET W52=ATN((Y3-Y52)/(X3-X52)) DEF zx51=-1*h*COS(W51)+X1 DEF zy52=-1*h*SIN(W51)+Y1 DEF zx53=(h-h50)*COS(W52)+X52 DEF zy54=(h-h50)*SIN(W52)+Y52 LET X62=-5 LET Y62=0 LET W61=ATN((Y62-Y1)/(X62-X1)) LET W62=ATN((Y3-Y62)/(X3-X62)) DEF zx61=-1*h*COS(W61)+X1 DEF zy62=-1*h*SIN(W61)+Y1 DEF zx63=(h-8)*COS(W62)+X62 DEF zy64=(h-8)*SIN(W62)+Y62 SET WINDOW -7,7,-7,7 DRAW GRID DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(3,0) DRAW CIRCLE WITH SCALE(3.2,4)*SHIFT(3,0) WAIT DELAY 1 FOR h=0 TO 10 STEP 0.1 SET DRAW mode hidden ! ちらつき防止 CLEAR DRAW GRID DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(3,0) DRAW CIRCLE WITH SCALE(3.2,4)*SHIFT(3-0.6*h,0) IF h=<2 THEN DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(zx1,zy2) ELSE DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(5,0) DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(zx3,zy4) END IF WAIT DELAY 0.1 IF h=<5 THEN DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(zx11,zy12) ELSE DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(0,4) DRAW DISK WITH SCALE(0.1,0.1)*SHIFT(zx13,zy14) END IF WAIT DELAY 0.1 IF h=