プロが教える店舗&オフィスのセキュリティ対策術

プログラムを組んでいるのですが、困っています。

2線の斜線が、交差する点の求め方を教えて下さい。

A 回答 (6件)

 J-Jさんのご回答で求めることができますよね。


 ただし、これが「一般の2直線の交点を求める」ということであればもう少し慎重になる必要があります。問題を整理して、
 直線a:点a1(Xa1,Ya1)と点a2(Xa2,Ya2)を結ぶ直線
 直線b:点b1(Xb1,Yb1)と点b2(Xb2,Yb2)を結ぶ直線
とします。すると直線の傾きは、
 直線aでは A=(Ya2-Ya1)/(Xa2-Xa1)、
 直線bでは B=(Yb2-Yb1)/(Xb2-Xb1)
ですが、それぞれXa2=Xa1、Xb2=Xb1のときに零による除算が発生します。これを事前にチェックして対応する必要があります。
 さらに直線の傾きが等しいとき(A=B)についても同様のことが言えます。もっともこの場合には交点なしというコードを返すようにしないといけませんが。
 さらにさらに、これが直線ではなくて「2線分の交点を求める」という問題ならば、求めた交点が線分上にのっているかどうかも確認しなければいけません。
 汎用の交点を求める関数を作っておくのも今後のために悪くないと思いましたので蛇足回答をいたしました。
    • good
    • 0
この回答へのお礼

間違いなく計算値と実数値が合いました。
お世話様でした。
又、詳細説明有り難うございます。

又、困った時はよろしくお願いします。

お礼日時:2001/01/07 11:45

ベクトルと外積を使うときれいに解決するという話でしょう。



頂点a,b,cがあるとします。
ベクトルabとacの外積を求めると頂点cがベクトルabに対して右側にあるか
左側にあるかが外積の正負によって判定できます。

これと次のことから直線の交差を判定できます。

直線a1a2と直線b1b2が交わる

頂点a1と頂点a1が直線b1b2をはさんで反対側にある
かつ頂点b1と頂点b2が直線a1a2をはさんで反対側にある。

外積の計算方法はちょっと忘れてしまいました。
すいません。
    • good
    • 0
この回答へのお礼

申し訳ございません。
回答は出ているのですが、質問を閉じるのを忘れていました。

お礼日時:2001/02/17 00:45

コンピュータにやらせるなら、まず傾きを計算させて変数に入れてしまうといいんじゃないですか?


線aの傾きをA=(y13-y0)/(x12-x0)
線b の傾きをB=(y3-y11)/(x7-x4)とおくと、
求める座標(X、Y)は

X=(A*x0-y0-B*x4+y11)/(A-B)
Y={A*y11-B*Y0+AB*(x0-x4)}/(A-B)
で出ると思います。ちゃんと展開して約分すれば簡単になるのかもしれないけど。。。
適当に連立方程式を解いたので、自信はないです。
最後の式はゼロがあったほうが計算し易いのでa1 x0 y0 とb1 x4 y11 を使いましたが、もちろん、a2とb2でもだいじょうぶです。
x0 y0 のところは省いてもいいですが、一般形にならなくなるので一応書いときました。
    • good
    • 0
この回答へのお礼

間違いなく計算値と実数値が合いました。
お世話様でした。

又、困った時はよろしくお願いします。

お礼日時:2001/01/07 11:43

ある直線が点(x1,y1)と点(x2,y2)を通るとき、


y-y1 = (y2-y1)(x-x1)/(x2-x1)
となりますから、これを展開すれば y=ax+b の形に変形できます。
    • good
    • 0
この回答へのお礼

お世話様でした。

又、困った時はよろしくお願いします。

お礼日時:2001/01/07 11:52

#1のpunchan_jpさんの回答どおりだと思うので、計算してみました。



x = - (b1 - b2) / (a1 - a2)
y = (a1*b2 - a2*b1) / (a1 - a2)

ですね。
(中学の教科書に載ってますよ?)

こういうことではないのであれば、補足ください。

この回答への補足

座標値での計算方法を教えて下さい。

値は
線a
a1 x0 y0
a2 x12 y13
線b
b1 x4 y11
b2 x7 y3

補足日時:2001/01/05 21:44
    • good
    • 0
この回答へのお礼

お世話様でした。

又、困った時はよろしくお願いします。

お礼日時:2001/01/07 11:52

平面上での話でしょうか?


その2本の直線はどのように与えられるのでしょう?
y=ax+b の1次式で与えられるとすると、
y=a1x+b1
y=a2x+b2
の交点は、この二つの式を連立方程式と考えて、x,yについて解けば求まります。

この回答への補足

座標値での計算方法を教えて下さい。

値は
線a
a1 x0 y0
a2 x12 y13
線b
b1 x4 y11
b2 x7 y3

補足日時:2001/01/05 21:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています