- ベストアンサー
2つの円が衝突しない距離 の早い求め方
平面状の2つの円 点1[座標x1, y1 半径r1] と 点2[座標x2, y2 半径r2] が接触しているかを (r1+r2)*(r1+r2) 左が右 (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) より大きいか否かで、衝突を判定できると学びました。 そして接触時に『2つの円が衝突しない距離(点2を動かす距離)』 を求めたいのですが、 今は角度を求める為にルートとアークコサインを使い(電卓) r1とr2の和を斜辺にして三角関数で求めていて時間がかかります。 これを何かもっと簡単に求める方法は無いものでしょうか・・?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
質問されてる内容が、よく解りません。 「平面状の2つの円 点1[座標x1, y1 半径r1] と 点2[座標x2, y2 半径r2]」 というのは、普通の数学の表現で書くと、 中心がP1(x1,y1)で半径がr1の円C1 と 中心がP2(x2,y2)で半径r2の円C2があって、 「が接触しているかを (r1+r2)*(r1+r2) 左が右 (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) より大きいか否かで、衝突を判定できると学びました」 というのは、 ちょうど外接しているとき、中心どうしの(P1とP2の間の)距離が、r1+r2になり、 √{(x1-x^2)^2 + (y1-y2)^2} = r1+r2、で、両辺を2乗すると、おっしゃってる式で 両辺が等しい状態、中心どうしがそれより遠ければ、C1,C2は、離れた位置に あって、それより近いと、既にぶつかっる状態、ということですよね。 ここまでは、解るのですが、 「接触時に『2つの円が衝突しない距離(点2を動かす距離)』」 のところが何を言ってるのかよく解りません。 例えば、2つの円が離れた状態にあって、P2がP1の位置に向かって、 まっすぐ進んでいくときに、円周どうしが接触するまで、どれだけの 距離を動けるか、とか、そういう話でしょうか? 万が一、そういう話なら、単純に、中心間の距離-半径の合計で、 √{(x1-x^2)^2 + (y1-y2)^2} -( r1+r2) になりますが… それと違うことを質問したかったのなら、そこんところの説明をよろしく お願いします。よほどでないと、三角関数などは使わないといけない ような話にはならない気がします(あくまでも、「気」だけですが)
お礼
解決には至りませんでしたが、質問締め切りに使わせていただきます。
補足
ご回答ありがとうございます。 2つの円がもし衝突していた場合は、 片方の円を接触しない位置に押し返したいのです。 説明が苦手で申し訳ないです。