• 締切済み

2つの線分の最短距離

2つの線分の衝突判定をして、そこから色々な形の当たり判定を作っていこうと思っているのですが・・・ 3次元上で、タイトルのものをどう計算して出したらいいのか分かりません。 本もいくつか読んでみましたが、数式しか載っていなくて、プログラムでどう表現したらいいのか・・・ ご教授願います。

みんなの回答

  • Interest
  • ベストアンサー率31% (207/659)
回答No.1

数式が分かっていれば、後はその数式をソースコードに落とすだけの話ですよね? 分かっている範囲で、衝突判定に使用する条件(数式)をここに書いていただけますか?

deadcell
質問者

お礼

返答が遅くなってすみません(-_-; タイトルの物は自己解決してしまったのですが、質問が間違っていました・・・ 2つの線分の衝突判定ではなくて、2つの線分の距離を算出したかったんです。 折角回答頂いたのに、誠に申し訳ありませんでした。

関連するQ&A

  • 任意の点と任意の線分との最短距離となる点

    現在C++でシューテイングゲームを作成しています。 当たり判定の計算として二次元座標の三点で判定を取れないかと考えて詰まっています。 具体的には任意の点Pと任意の点ABからなる線分の最短距離を算出したいのですが、これは可能なのでしょうか

  • 3次元空間内での線分の交差判定について

    はじめまして。 3D関係のプログラムを組む上で、線分同士の判定を行う必要があるのですが 数学の知識が乏しく困っています。 3次元空間内の線分ABとCDが交差しているか判定し、 交差していればその交点を求めたいのです。 2次元の場合はできたのですが、3次元になるとどうやって計算すればよいのか わかりません。(交差以外に、ねじれの位置関係があるんですよね?) どなたか教えていただけると助かります。

  • 線分の交点の保持

    いつもお世話になってます。 2つ以上の線分が2次元上にあって、線分が交差した場合それぞれの交点を保ちながらも移動し、交点で回転しながら他の線分とも衝突判定を行う、というアルゴリズムを考えているのですがなかなかうまくいかず悩んでいます。 最終的にはたくさんの線分がくっついて、くねくねしながら移動するようなイメージです。 速度を同じにして、交点を軸に回転させてみたのですが、3本目の線分が交差したときうまくいかなくなってしまいました・・。 ぜひ皆さんの力を貸してください。よろしくお願いします。

  • ★点と線分の距離??★

    いつもお世話になっています。 プログラミングで困っています。どなたか基本的な数学からご教授ください。 (1)線分ABに対して点Pから垂線を下ろすことが出来るかどうかの判定をするには? (2)垂線と線分との交点の座標を求めるには? (3)垂線と線分の交点の距離を求めるには これらの処理を出来るだけ早く処理したいのです。 あと、確認なのですが 「線分に垂線を下ろすことができるのであれば、その交点が点に最も近い」 でいいのですよね。 よろしくお願いします。

  • 線分と線分が交わる条件を簡単に求める方法ってないでしょうか?

    線分と線分が交わる条件を簡単に求める方法ってないでしょうか? 線分が2つ(8つの値)があります (ax1,ay1)-(ax2,ay2) (bx1,by1)-(bx1,by1) この8つの値の大小関係だけで交差するかどうかの判定って 可能でしょうか? 直線の式y = ax + bを2つをわりだし その解がそれぞれの線分の範囲内にあるかで求めていたのですが 線分の数が多いためパフォーマンスに影響がでてきてしまいました。 (C言語で計算させています。) 数学は苦手なので、困っております。 或いは良い案があればお願いします

  • 内積を用いた移動する線分と円の衝突判定について

    内積を用いた移動する線分と円の衝突判定について 作成しているプログラムはピンボールのフリッパーとボールとの衝突判定です。14歳からはじめるリアルに動くゲーム物理プログラミング教室C言語編と言う本を参考にプログラミングしています。左フリッパーが315度~360度、1度~45度の範囲を1度づつ移動する度に衝突判定をする関数を作成し、衝突した場合に関数から抜け、戻り値としてボールの情報を持つ構造体の中の反射スピードと反射座標を返すものです。 ここからが質問なのですが、ボールは全くフリッパーの衝突と関係の無い所で反射してしまいます。移動しない線分の両端の座標を与えた衝突判定(壁)では正しく判定するのですが、角度を与えて移動する線分(フリッパー)では上手くいきません。お分かりになる方いらっしゃいましたら、宜しくお願い致します。 関数に渡す引数はその時のボールの座標・速度などの構造体と左フリッパーの角度です。 以下ソースコード //左フリッパーの軸と成る座標 float hx_l = (cx_l*ZOOM); //フリッパーのx座標 float hy_l = (cy_l*ZOOM+HORIZ); //フリッパーのy座標 //ベクトル a の成分を求める float ax=xy.posx-hx_l; //線分始点からボール中心へのベクトル float ay=xy.posy-hy_l; //線分始点からボール中心へのベクトル //ベクトル b の成分を求める float bx=((cx_l+cos(ToRadian(angler_l))*clubr)*ZOOM)-hx_l; //線分始点から終点へのベクトル float by=((cy_l-sin(ToRadian(angler_l))*clubr)*ZOOM+HORIZ)-hy_l;//線分始点から終点へのベクトル float inpro=ax*bx+ay*by; //ベクトル a,b の内積を求める float bl=bx*bx+by*by; //ベクトル b の長さの二乗(線分始点から終点へのベクトル if(inpro>-ZERO1 && inpro<(bl+ZERO1)){ //フリッパーとの衝突判定 //ベクトル a の線分がボールの半径より小さければ交差している if((ax*ax+ay*ay)-pow(inpro/sqrt(bl),2) < pow(xy.radius,2)){ 以下判定後の処理‥‥ ベクトルbのbx,byを求める式でangler_lが引数として渡されるフリッパーの角度に成ります。ToRadian()は関数で角度をラジアンに変更します。

  • 線分と円が交差する条件

    線分と円(6つの値)があります 線分:(ax1,ay1)-(ax2,ay2) 円:中心(x1,y1)半径r この6つの値から 線分が円に含まれる、或いは円と交差する条件を判定したいのですが まるで検討がつきません。 円の式は (x - x1)^2 + (y - y1)^2 = r^2 でしょうか。(自信無し) リアルタイムにコンピューターで計算するため 出来れば少ない計算量で計算させたいのですが。。。 宜しくお願い致します。

  • 線分と楕円が交差する条件

    同じカテゴリに度々すみません。 線分と楕円の交差する条件判定も 必要になってしまいました。(最後です) 楕円のデータとしては矩形でもっていて (px1,py1)-(px2,py2)の長方形の中に収まる楕円です。 その値を(cx - x)^2 / a + (cy - y)^2 / b = 1 へ変換し http://oshiete1.goo.ne.jp/kotaeru.php3?q=673382 の回答を参考にして内部に線分の端点がある場合の判定はできました。 しかし先端の間に楕円がきた場合はお手上げ状態です。 線分と楕円が交差する条件についてご教授ください。

  • 2線分の最短距離

    2線分の最短距離を求める方法はありませんか? ぐぐっても見ましたが点と線ばかりでした。

  • 2線分の最短距離。

    X、Y座標系で2線分の最短距離を測りたいのですが、お互いの端点から相手線分へ下ろした垂線の長さが最小となるものでよいのでしょうか?

専門家に質問してみよう