• ベストアンサー

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の和を斜辺にして三角関数で求めていて時間がかかります。 これを何かもっと簡単に求める方法は無いものでしょうか・・?

noname#202167
noname#202167

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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) になりますが… それと違うことを質問したかったのなら、そこんところの説明をよろしく お願いします。よほどでないと、三角関数などは使わないといけない ような話にはならない気がします(あくまでも、「気」だけですが)

noname#202167
質問者

お礼

解決には至りませんでしたが、質問締め切りに使わせていただきます。

noname#202167
質問者

補足

ご回答ありがとうございます。 2つの円がもし衝突していた場合は、 片方の円を接触しない位置に押し返したいのです。 説明が苦手で申し訳ないです。

関連するQ&A

  • 円と円が衝突した時、めり込みを押し返すには?

    円と円が衝突した時、めり込みを押し返すには? 円A(中心座標c, d 半径r1) 円B(中心座標e, f 半径r2) の2つの円があり、 円BがベクトルV(x, y)の速度で動き続け 静止している、 円Aに衝突した(めり込んだ)場合、 衝突そのものはなんとか検出できるのですが、その後 「円Bの中心座標を円Aにめり込まない最短距離+αに押し返す」 とするにはどう計算すれば良いでしょうか・・? 手順や式を教えて頂けますと助かります、 よろしくお願いします。 っ_ _)っ

  • 3円に接する円の求め方

    円(1) 中心(x1,y1) 半径r1 円(2) 中心(x2,y2) 半径r2 円(3) 中心(x3,y3) 半径r3 上記の3円に接する円の中心点と半径の求め方を教えてください。 宜しくお願いいたします。

  • excelの乱数を用いて円が重ならない座標を選び出

    excelの乱数を用いて円が重ならない座標を選び出す方法 2次元平面(0<x<100,0<y<100)に同じ半径rの円を重ならないように配置したいのですが、困ってます。 考えとしては 1.まず1個の円の中心座標を決める(R1(x1,y1)とする) 2.2個目の円を、1個目と重ならないよう配置できる中心座標R2(x2,y2)を乱数で決める。 ((x1-x2)^2+(y1-y2)^2>4r^2) 3.3個目の円を、1個目と2個目と重ならないように配置できる中心座標R3(x3,y3)を決める。 ((x1-x3)^2+(y1-y3)^2>4r^2かつ(x2-x3)^2+(y2-y3)^2>4r^2) これを繰り返す。 このような座標をexcelの乱数機能を用いて出すことは可能でしょうか? 皆様のお力をお貸しください。

  • 二次元の完全弾性衝突

    二次元での完全弾性衝突について 今、二次元空間内に半径rの剛体円盤1、2があります。 時刻t=0でのそれぞれの位置が(X1,Y1)、(X2,Y2)、速度が(Vx1,Vy1)、(Vx2,Vy2) で与えられています。 この二つが衝突する条件を求めよという問題で衝突直前t=t0の値として (X1',Y1')、(X2',Y2')、(Vx1,Vy1)、(Vx2,Vy2)という値も与えられているのですが どうしたらいいのでしょうか。 また衝突するとき、衝突後の速度V1'、V2'を衝突時の座標(X1,Y1)、(X2,Y2)、 速度V1、V2を使ってあらわすにはどうすればいいのでしょうか。 よろしくお願いします。

  • 円と円の関係

    1つの半径Rの円(以下大きな円)があるとし、それに対して半径rの円(以下小さな円)を当てようとしています。 ただし、小さな円の当て方は、Y軸に対して平行な当て方をしようとするとします。 大きな円の中心からx1だけ離れた場所に当てようとした時、小さな円の中心位置の座標を求めたいと考えています。 これだけであれば、x=x1 、 y=√((R+r)^2-x1^2) だけで終わりなのですが、 何かのミスで、当てる方向がY軸と平行な方向から30°ずれて当たってしまっている場合、 小さな円の中心がどのように変化するかを求めたいのですが、 どのようにして求めるべきか見当がつきません。 どなたか分かれば教えてください。

  • 円の座標値

    半径5.0の円があるとします。 中心座標を(0,0)とした場合のA点を(0,-5.0)の位置とします。 このA点が円周上に沿ってX方向に、ある距離移動した場合のY軸の値を求めたいのですが どのように計算すればよいでしょうか? 例えば、Xが1.0に移動した場合Yの値が幾つになるのか、 1.5の時はYの値が幾つになるのかを知りたいのです。 (一応、関数電卓があります…)

  • 円と線分の共有点

    点P(x1, y1)と点Q(x2, y2)を通る直線と、中心のx座標、y座標、半径が分かっている円Oとの共有点を調べることは簡単ですが、線分PQと円Oの共有点を、図を描かずに計算で調べることは出来ますか? よろしくお願いします。

  • x^2+y^2=r^2(rは円の半径)上の点P(x

    x^2+y^2=r^2(rは円の半径)上の点P(x1,y1)におけるこの円の接線の方程式は、x1x+y1y=r^2です。 この時、x1x+y1y=r^2ならば、半径がrの円の接線の方程式である。と、逆にした時に成立しない理由を教えてください。

  • 関数電卓を使って、角度(アークコサイン)を求めたい。

    関数電卓を使って、角度(アークコサイン)を求めたい。 カシオfx-360MTの関数電卓を使って 直角三角形、斜辺105、高さ30 の角度を関数電卓を使って求める 方法を教えてください。 アークコサイン 105 ÷ 30 と思うのですが 電卓で計算すると微妙に数字が合わなくて困っています。 

  • 円の中心座標の求め方を教えてください

    とあるプログラムを作ろうとしています。 円弧を描くプログラムなのですが、中高で数学を真面目に勉強していなかったツケがまわってきたようで、あっけなく行き詰ってしまいました。 円周の二点の座標(x1,y1)(x2,y2)と、円の半径がわかっているのですが、それらから円の中心座標を求めたいと思っています。 公式などあったら、詳しい方、お願いします。