プロが教えるわが家の防犯対策術!

十進ベーシック超初心者です。二次元の箱の中に円を置き、そこで衝突を繰り返すプログラムをつくりたいのですが行き詰っています。
箱の中だけでの衝突は、以下のようにプログラムできたのですが、円にぶつかるときどのようにプログラムをくんで跳ね返させればいいかわかりません。どなたか教えて下さい。


SET WINDOW -20,20,-20,20
DRAW GRID(2,2)
PLOT LINES: -10,-10 ;10,-10;10,10;-10,10;-10,-10
DRAW CIRCLE WITH SCALE (2)

LET X=-10
LET Y=-10
LET T=0
LET V=4.53574748
LET A=56.654968
LET VX=COS(A)
LET VY=SIN(A)

100 PLOT LINES:X,Y ;

IF VX>0 THEN
LET LX=20-(10+X)
END IF
IF VX<0 THEN
LET LX=20-(10-X)
END IF

IF VY>0 THEN
LET LY=20-(10+Y)
END IF
IF VY<0 THEN
LET LY=20-(10-Y)
END IF

LET T=MIN(LX/ABS(VX),LY/ABS(VY))
LET X=VX*T+X
LET Y=VY*T+Y

IF T=LX/ABS(VX) THEN
LET VX=-VX
END IF
IF T=LY/ABS(VY) THEN
LET VY=-VY
END IF

GOTO 100
END

A 回答 (1件)

円の大きさがわかっているなら、中心の座標が今どこにあるかを見張ることで、接触したかどうかの判定はできますけど、そういう問題ではないですか?座標系が100x100で中の円が直径20なら、円の中心座標がX>90またはX<10のとき、左右の壁に当たっていることになります。

この回答への補足

回答ありがとうございます。
問題は、座標系が100x100の箱の中に、原点に直径20の固定された円(座標系、円の直径はこの値でなくてもいい)を置き、その箱の中で直径を考えない物体(レーザーのようなもの)を衝突させ続け、レーザーが通った後は黒く表示され、箱の中が真っ黒になっていく様子を見たいのです。直径20の円の中にはレーザーは入らず、円の中は真っ白なままです。ちょっと意味がわからないかもしれないですが、私がつくったプログラムをコピーして実行していただけたら、何がしたいかわかると思います。
私は、箱の中でレーザーを跳ね返させ続けるプログラムをつくることはできたのですが、原点に円を置き、そこにレーザーを跳ね返させるのに苦労しています。
レーザーが円にぶつかる時刻、ぶつかった後のレーザーの進む方向など、どうプログラムをくめばいいかわかりません。

補足日時:2009/11/13 12:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!