- 締切済み
2線分の最短距離
info22の回答
- info22
- ベストアンサー率55% (2225/4034)
#1,#2です。 A#2は三次元の2直線間の(最短)距離を対象とした回答です。 質問が2次元で、2線分間の距離の場合なら、補足でそのようにお書き下さい。 また三次元空間における2線分間の距離の場合も。補足にその様にお書き下さい。 この場合、直線間の最短距離の点が線分上にない場合は、最短点に最も近い線分の端点からの距離が最短になりますが、最短点がどちらの線分上の外に出てしまうか、あるいは、どちらの線分上にもない場合は、端点間の距離を比較して線分上の最短となる端点を選びます。 質問の内容が2次元か3次元か、線分の位置関係によって条件が変わってきますので、質問の問題をはっきり書いて、問題が不明確にならないようにして下さい。
関連するQ&A
- 任意の点と任意の線分との最短距離となる点
現在C++でシューテイングゲームを作成しています。 当たり判定の計算として二次元座標の三点で判定を取れないかと考えて詰まっています。 具体的には任意の点Pと任意の点ABからなる線分の最短距離を算出したいのですが、これは可能なのでしょうか
- ベストアンサー
- 数学・算数
- ★点と線分の距離??★
いつもお世話になっています。 プログラミングで困っています。どなたか基本的な数学からご教授ください。 (1)線分ABに対して点Pから垂線を下ろすことが出来るかどうかの判定をするには? (2)垂線と線分との交点の座標を求めるには? (3)垂線と線分の交点の距離を求めるには これらの処理を出来るだけ早く処理したいのです。 あと、確認なのですが 「線分に垂線を下ろすことができるのであれば、その交点が点に最も近い」 でいいのですよね。 よろしくお願いします。
- ベストアンサー
- 数学・算数
- 2つの線分の最短距離
2つの線分の衝突判定をして、そこから色々な形の当たり判定を作っていこうと思っているのですが・・・ 3次元上で、タイトルのものをどう計算して出したらいいのか分かりません。 本もいくつか読んでみましたが、数式しか載っていなくて、プログラムでどう表現したらいいのか・・・ ご教授願います。
- 締切済み
- C・C++・C#
- 2つの放物線間の最短距離
2つの放物線間の最短距離をラグランジュの未定乗数法を用いて求める方法を教えていただけないでしょうか. 2つの式はそれぞれ y=x^2・・・(1) y=-3(x-1)^2・・・(2) です. 個人的には 式(2)上の1点を(a,b)と置く. 式(1)上の任意の一点(x,y)との距離を√(x-a)^2+(x-b)^2 と表す. f(x,y)=√(x-a)^2+(x-b)^2 g(x,y)=y-x^2=0 と置き,ラグランジュの未定乗数法を用いて(a,b)でのf(x,y)の最小値を出す. aについての増減表を書いて最短距離と放物線上の2点を求める. という方法で求められるのではないかと思ったのですが,最小値を求めることができませんでした. 図書館などで微積分の演習書を全部調べましたが同じような問題を見つけることができず,困っています. 宜しくお願いします.
- ベストアンサー
- 数学・算数
- 「最短距離」の接触判定
1.マウスポインタの左ドラッグ中には、通った軌跡をサンプリングし、Flagを1にして座標(x,y)を「Point」という変数に記録(x[Point],y[Point],Flag[Point]=1)していくとともに、隣り合う座標点を結んで線を描く。 2.マウスポインタの右ドラッグ中に、指定した範囲周辺(例えば50*50[mm]以内)にサンプリングされた座標点が入ったら「接触」と判定する。 3.この際、複数の座標が範囲内に含まれている場合は、マウスポインタの中心から最短距離にある座標点を「接触点」とする。 4.接触点に対してアクションを起こす(例えば、移動させる、線の色や太さを変える、など)。 このようなプログラムにおいて、「最短距離にある座標点」の検出をどのように記述すればいいでしょうか。 接触判定、最短距離の接触点の検出、描線の開始・終了点の検出、アクション、という順番に記述しようと思うのですが、 【接触判定】 マウスポインタの位置と各Pointとの距離の絶対値をfor文で調べ、指定範囲内に収まっているものがあれば接触と判定。 【最短距離の接触点の検出】 ? 【描線の開始・終了点の検出】 最短距離の接触点から描画開始・終了方向にそれぞれシーケンシャルサーチして、Flagが1から0になるところの点をそれぞれ開始点・終了点とする。 【アクション】 開始点~終了点までの各Pointにアクションを起こす。 このような流れです。具体的にどのように最短距離の検出を書けばいいか、ご指導いただけませんでしょうか。使用ソフトはC++Builder4です。
- ベストアンサー
- C・C++・C#
補足
書き方が悪かったようですみません。 シューティングのレーザーorビーム類の当たり判定に使いたいと思っていますので、 2次元の2つの線分の最短距離についてです。 しかし後々3次元にも拡張したいと思っています 当たり判定用なので、線分同士の位置関係がどのようになるかは解りません。