DECLARE EXTERNAL PICTURE YA PRINT PRINT "赤玉が作る重力場(3次元)の断面のイメージ" PRINT " ( 場の大きさは距離の2乗に反比例します。)" PRINT SET WINDOW -5,5,-5,5 LET Z=0 DO WHILE Z<9 SET LINE WIDTH .2 IF INT(Z/2)=Z/2 THEN SET LINE COLOR 0 PLOT LINE -5,0;5,0 PLOT LINE -.001,5;-.001,-5 PLOT LINE -5,-5;5,5 PLOT LINE -5,5;5,-5 FOR i=1 TO 7 DRAW CIRCLE WITH SCALE(i)*SHIFT(0,0) DRAW CIRCLE WITH SCALE(i*SQR(2))*SHIFT(0,0) NEXT i ELSEIF INT((Z+3)/4)=(Z+3)/4 THEN SET LINE COLOR 15 PLOT LINE -5,0;5,0 PLOT LINE -.001,5;-.001,-5 FOR i=1 TO 7 DRAW CIRCLE WITH SCALE(i)*SHIFT(0,0) NEXT i ELSEIF INT((Z+1)/4)=(Z+1)/4 THEN SET LINE COLOR 15 PLOT LINE -5,-5;5,5 PLOT LINE -5,5;5,-5 FOR i=1 TO 7 DRAW CIRCLE WITH SCALE(i*SQR(2))*SHIFT(0,0) NEXT i END IF SET LINE COLOR 1 SET AREA COLOR 4 DRAW DISK WITH SCALE(.2)*SHIFT(0,0) FOR x=-5 TO 5 FOR y=-5 TO 5 IF x=0 AND y>0 THEN DRAW YA(1/(x^2+Y^2)) WITH ROTATE(-PI/2)*SHIFT(x,y) ELSEIF x=0 AND y<0 THEN DRAW YA(1/(x^2+Y^2)) WITH ROTATE(-3*PI/2)*SHIFT(x,y) ELSEIF x<0 AND y=0 THEN DRAW YA(1/(x^2+Y^2)) WITH SHIFT(x,y) ELSEIF x>0 AND y=0 THEN DRAW YA(1/(x^2+Y^2)) WITH ROTATE(-1*PI)*SHIFT(x,y) ELSEIF x<0 THEN DRAW YA(1/(x^2+Y^2)) WITH ROTATE(ATN(Y/x))*SHIFT(x,y) ELSEIF x>0 THEN DRAW YA(1/(x^2+Y^2)) WITH ROTATE(PI+ATN(Y/x))*SHIFT(x,y) END IF NEXT Y NEXT x LET Z=Z+1 WAIT DELAY 6 LOOP PRINT PRINT "このプログラムは終了しました。" PRINT END EXTERNAL PICTURE YA(D) !基本の矢印を描く SET LINE WIDTH 3*D PLOT LINES: 0,0;0.8*D,O PLOT LINES: 0.8*D,O;.5*0.8*D,-.3*0.8*D PLOT LINES: 0.8*D,O;.5*0.8*D,.3*0.8*D END PICTURE