• 締切済み

線分の交点

1点を通り、ある角度を持つ、無限長の線分を定義する構造体 struct LongLine{ CPoint p; double dAngle; }; を作りました。 これを使って2つの線分の交点を求める関数を作りたいと思いますが、なかなかできかません。

みんなの回答

回答No.3

dAngleということは単位は度かな? ラジアンにすると θ = dAngle × π/180 で、θをx軸からの傾きとすると、 y = ax + b  の a は arctan(θ) これでいいっすか?

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

2つの線分をL1, L2と置きます。 L1上の点pを媒介変数tを使って表すと、 p(cos(L1.dAngle)*t+L1.p.x, sin(L1.dAngle)*t+L1.p.y) のような感じになります。 点pを通り、角度L2.dAngleの直線は… その直線が(L2.p.x, L2.p.y)を通るので… とすると、tが算出できて、点p(t)の座標に代入すると、交点が求まる。 なんてのも1つのアルゴリズムです。 -- > 関数を作りたいと思いますが、 関数の戻り値の型は? 関数の引数の数は?型は? > なかなかできかません。 どういう考え方をしたか? その結果、どこで詰まったか? なんて事を書かれては?

回答No.1

それで、ご質問はなんですか? y = ax + b の形式に変換すれば、あとは連立方程式を解くだけ。

関連するQ&A

  • 2つの線分に垂直な線分の交点

    2次元平面に点P(x0,y0)、点A(x1,y1)、点B(x2,y2)があり、 点Aを通る線分PAに垂直な線分と 点Bを通る線分PBに垂直な線分の交点の 求め方を教えて下さい。 垂直ベクトルを求め、任意に座標を決めて 連立方程式を解くやり方だと上手くいかない時が あります。シンプルに求める方法がありましたら 教えて下さい。

  • 交点の座標

    宜しくお願いします。 2本の線分の交わる交点の座標の計算のしかたを、教えて下さい。2本とも角度と点の座標は分かっていると仮定します。 宜しくお願いします。

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

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

  • 数学orアルゴリズムが得意の方(線分と線分の交点判別)

    C言語のアルゴリズムを勉強中です。 線分A(A(x1,y1),B(x2,y2))と線分B(C(x3,y3),D(x4,x4))が交差するかどうかを判別し、交差するのであればその交点P(X,Y)を求める。 また、その交点がどちらか一方の線分上にあるかどうかも判別したいのです。 一番効率よくやるにはどのようにすればよいでしょうか。 例えば 1、三角形の符号付き面積を使って交差するかどうかと各点が線分上にあるかどうかを判別し、その後交点を求める 2、とり合えず交点を求めてその交点が各線分内(上)にあるかどうかを判別 他にもたくさんありそうですがとにかく出来るだけ計算回数を減らしたいのです。(さっき求めた~~を~~するといったかんじで) 出来れば流れ全体を書いていただきたいのですが書き込むのが大変だと思うのでせめて使う判別式だけでも教えてください。 これが出来たら、 多角形と多角形の交点判別のアルゴリズムにも挑戦しようと思っています。 数学の得意な方、アルゴリズムを考えるのが好きな方 よろしくお願いします。

  • 点Bから線分AEに線を引き交点をHとする。線分B

    点Bから線分AEに線を引き交点をHとする。線分B Hの長さを求めよ。 ていう問題です。だれか教えてくれませんか?

  • 線分同士の交点の判定

    線分の交差判定についてネットで調べていたら、以下のような処理で できると書かれていたページがあったのですが、どうしても理解する事が できません。 もしできれば、解説を頂いてもいいでしょうか。 よろしくお願いします。 //2次元での線分と線分の交差判定と交点 BOOL CheckCrossLine(CONST D3DXVECTOR2* pvA1,           CONST D3DXVECTOR2* pvA2,           CONST D3DXVECTOR2* pvB1,           CONST D3DXVECTOR2* pvB2,           D3DXVECTOR2* pvOut) { D3DXVECTOR2 v1 = *pvA1 - *pvB1; D3DXVECTOR2 vA = *pvA2 - *pvA1; D3DXVECTOR2 vB = *pvB2 - *pvB1; if (*pvA1 != *pvA2) ; else return FALSE;//線分が点のときは交差していないとする if (*pvB1 != *pvB2) ; else return FALSE;//線分が点のときは交差していないとする FLOAT fDeno = vA.x * vB.y - vA.y * vB.x;//外積の長さ //分母が0で、平行なときは if (fDeno != 0.0f) ; else return FALSE;//交差していないことにする FLOAT t = (v1.y * vB.x - v1.x * vB.y) / fDeno; FLOAT s = (v1.y * vA.x - v1.x * vA.y) / fDeno; if (t < 0.0f || t > 1.0f || s < 0.0f || s > 1.0f) return FALSE;//交差していない else { //交点を返す pvOut->x = vA.x * t + pvA1->x; pvOut->y = vA.y * t + pvA1->y; return TRUE;//交差 }

  • 長さ2の線分NSを直径とする球面Kがある

    点Sに於いて球面Kに接する平面の上でSを中心とする半径2の4分円弧ABと線分ABを合わせて得られる曲線上を点Pが一周する このとき線分NPと球面Kとの交点Qの描く曲線の長さを求めよ 解き方を教えてください

  • ある点からある直線へ降ろした垂線の交点

    3次元空間において、3点A,B,Pがあったとします。 A,B,Pの座標はそれぞれ既知で、A(xa,ya,za) B(xb,yb,zb) P(xp,yp,zp)と表わされる時に、 (1)線分ABに対して点Pから垂線を下ろすことが出来るかどうかの判定をするには? (2)垂線と線分との交点の座標を求めるには? 以上の2つのことを行いたいのです。 数学的知識に乏しいため、自力ではなかなか答えに辿り着くことが出来ません。 よろしくお願いします。

  • 平面図形、線分の長さの最大値

    2つの半直線OX、OYをとり、OY上の点PからOXに下ろした垂線の足をQとする。Pを通りOXに平行な直線上に点Sを、線分OSとPQが交わるようにとり、OSとPQの交点をRとする。 線分OPの長さが1、線分RSの長さが2を保ちながら∠XOYを鋭角の範囲で変化させたときの、線分QRの長さの最大値を求めよ この問題を解いています P(cosθ、sinθ)、Q(cosθ、0)、R(cosθ、t)とおいて、直線ORの式を出してS(sinθcosθ/t、sinθ) としてRS=2の条件で出そうと思ったのですが計算がうまくいきません。 この方針であっているでしょうか? あっているなら計算について、はずれているならどのように解けばいいのかを教えてください。宜しくお願いします

  • 線分の外分

    線分AB(長さは8)を3:1に外分する点Pを図に記入せよ。 解答  線分ABを3:1に外分する点Pは、線分ABをBの方向に延長した線上にあり AP:PB=3:1 このとき、AB=8とすると BP=8×1/3-1=4 質問 「BP=8×1/3-1」をどのようにして導いているのか分かりません(特に「3-1」は何を表わしているのかが分からない。)ので詳しく教えてください。

専門家に質問してみよう