|
> No.1953[元記事へ]
GAIさんへのお返事です。
> 原点を中心に半径r1の円周上を反時計回りに回転する動点Pがある。
> さらに、動点Pを中心として半径r2の円周上を半時計回りにPのa倍の速さで回転する動点Q
> 同じく、動点Qを中心として半径r3の円周上を時計回りにPのb倍の速さで回転する動点Rとする。
> 最初P(r1,0),Q(r1+r2,0),R(r1+r2+r3,0)でスタートしたとき、点Rの軌跡を見てみたい。
LET R1=5 !半径
LET R2=2
LET R3=1
LET A=5 !速度
LET B=12
LET R=R1+R2+R3+1 !表示領域
SET WINDOW -R,R,-R,R
DIM PX(0 TO 360),PY(0 TO 360) !点P
DIM QX(0 TO 360),QY(0 TO 360) !点Q
DIM RX(0 TO 360),RY(0 TO 360) !点R
FOR i=0 TO 360
SET DRAW mode hidden !ちらつき防止開始
CLEAR
DRAW grid !座標を描く
LET PX(i)=R1*COS(RAD(i)) !反時計まわり
LET PY(i)=R1*SIN(RAD(i))
LET QX(i)=R2*COS(RAD(A*i))+PX(i) !反時計まわり
LET QY(i)=R2*SIN(RAD(A*i))+PY(i)
LET RX(i)=R3*COS(RAD(-B*i))+QX(i) !時計まわり
LET RY(i)=R3*SIN(RAD(-B*i))+QY(i)
SET LINE COLOR "GREEN" !円
DRAW CIRCLE(R1) WITH SHIFT(0,0)
DRAW CIRCLE(R2) WITH SHIFT(PX(i),PY(i))
DRAW CIRCLE(R3) WITH SHIFT(QX(i),QY(i))
SET LINE COLOR "BLACK"
MAT PLOT LINES, LIMIT i+1:PX,PY !点P
SET AREA COLOR "BLACK"
DRAW DISK(0.2) WITH SHIFT(PX(i),PY(i))
SET LINE COLOR "BLUE"
MAT PLOT LINES, LIMIT i+1:QX,QY !点Q
SET AREA COLOR "BLUE"
DRAW DISK(0.2) WITH SHIFT(QX(i),QY(i))
SET LINE COLOR "RED"
MAT PLOT LINES, LIMIT i+1:RX,RY !点R
SET AREA COLOR "RED"
DRAW DISK(0.2) WITH SHIFT(RX(i),RY(i))
SET DRAW mode explicit !ちらつき防止終了
WAIT DELAY 0.1 !!!!!
NEXT i
PLOT LINES
END
EXTERNAL PICTURE CIRCLE(R) !円を描く
FOR i=0 TO 360
PLOT LINES: R*COS(RAD(i)),R*SIN(RAD(i));
NEXT i
PLOT LINES
END PICTURE
EXTERNAL PICTURE DISK(R) !円板を描く
DIM X(0 TO 360),Y(0 TO 360)
FOR i=0 TO 360
LET X(i)=R*COS(RAD(i))
LET Y(i)=R*SIN(RAD(i))
NEXT i
MAT PLOT AREA, LIMIT 361: X,Y
END PICTURE
|
|