2本の2D線の交点を見つけるアルゴリズムが必要です。各行はの形式で、行の点と平行ベクトルのdx/dyの形式で表示されます。私は各行のパラメータ化を試みて、パラメータ化された変数を解くために方程式の系を解くことを試みました。私は線のパラメトリック方程式にプラグインしてx/yを得ることができました。何か案は?私はPythonでプログラミングしていますが、言語はそれほど重要ではありません。各行と平行なベクトルに点が与えられた2本の線の交点を見つける方法
答えて
あなたは基本的に以下の式を解決しなければならない:
X = X 0、 + DX ×トン
Y = Y 0、 + DY ×トン
X = X 0、 + DX B × U
Y B = Y 0、 + DY B × U
またはB:
X 0、 + DX × T = X 0、B + DX B × U
x, + dxa ×t = x 0、b + DX Bあなたには、いくつかの代数操作をすればuが
さて、あなたはそれを見つけるでしょう ×:
トン= DY B ×( -x 0 Bのx 0、を) Bを-dx ×(Y 0、 -y 0、)/ D B
U = DY ×( -x 0 B X 0、)がを-dx ×/D( -Y 0、 B Y 0)。どこ
D =
DX × DY B -dx B × dyが今では(あなたが両方を計算する必要はありません)ので、t
またはu
のいずれかを決定するための唯一の問題です上記の数式にプラグインします。式(分母)でd
がゼロに等しい場合ので
def intersect(x0a,y0a,dxa,dya,x0b,y0b,dxb,dyb):
t = (dyb*(x0b-x0a)-dxb*(y0b-y0a))/(dxa*dyb-dxb*dya)
return (x0a+dxa*t,y0a+dya*t)
、これは交差が(二行が平行である)が存在しないことを意味します。関数を変更して、たとえばNone
を返すか、そのような場合に例外を発生させることができます。
たとえば、ベクトル(1,0)のオフセットと方向(0,1)でテストすると、オフセット(0,2)および方向(1,1)を有するベクトルと、あなたはそれほど驚くべき結果を得られません。
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def intersect(x0a,y0a,dxa,dya,x0b,y0b,dxb,dyb):
... t = (dyb*(x0b-x0a)-dxb*(y0b-y0a))/(dxa*dyb-dxb*dya)
... return (x0a+dxa*t,y0a+dya*t)
...
>>> intersect(1,0,0,1,0,2,1,1)
(1.0, 3.0)
あなたの答えを10倍アップアップすることができたら、私はそうするでしょう。どうもありがとうございました。 –
- 1. 線の交点矩形 - 交点を見つける方法?
- 2. 与えられた線に垂直な点を見つける
- 3. 与えられたベクトルに平行な点にベクトル/矢印をプロットする
- 4. Pythonの与えられた点から近点を見つける方法
- 5. 2本の線の交点を見つけるための公式
- 6. 互いに平行二点における2つのベクトル
- 7. 2点が与えられた行ごとの平面の分離
- 8. ある与えられた点からの距離に沿った線の中間点を見つける
- 9. 2つの与えられたLinkedListの交点
- 10. 与えられた範囲内の交点を見つけるか?
- 11. 線分(交点の内側の1点、外側の1点)と辺の交点を見つける
- 12. 2本の線(ImageViews)の交点を得る方法
- 13. 与えられた点で交差する線の集合を見つけ出すCGAL
- 14. ポリフィットからの曲線の交差点を見つける
- 15. 曲線の交点を見つけるために、より神託の方法
- 16. 2本の平行線の間の最大点数
- 17. Matlab:交点のxとyの値を与える出力ベクトル
- 18. 行とQPainterPathの交差点を見つける
- 19. 3次ODEと線の交点を見つける?
- 20. Plotlyと線の交点を見つける
- 21. 空白とベクトルの点を与えられたX長さの線を描く
- 22. 与えられた2つの点から線を作成する
- 23. Boost.Test - 交差点上の2つのベクトルをチェックする方法?
- 24. 2つのデータフレームの交差点を見つけて平均を取る -
- 25. 直線と区分線形曲線の交点を見つける
- 26. Javascript内の線を含む円の交点を見つける
- 27. 雲の点から形成された2つの線の交点を検出する方法
- 28. 交差点とETAを見つける
- 29. 2つの同心円の間に特定の点があるかどうかを見つける方法は?各円に3点を与えます
- 30. 与えられた点からの線分上で垂直線
「私の試みは失敗しました」 - あなたの試みを見ることができる何らかの方法があれば?それは私たちにとって有益な情報でしょうか? :-) – paxdiablo
「平行ベクトルのdx/dy」という意味はどういう意味ですか?線の傾き(平行な線が同じ傾きを持つため)、または線の方向ベクトルなどが与えられていることを意味しますか?そして、私たちはあなたの仕事の証拠を問題に見る必要があります。何も失敗したものを見ることができます。 –
@paxdiablo - すごく塩味があります。しかし、もちろん。私はそれが長くて悪かったので、それを含めなかっただけです。私はx = x1 + t1 * dx1、y = y1 + t1 * dy1、x = x2 + t2 * dx2、y = y2 + t2 * dy2から始めました。方程式系Iを解いた後、t2 =(x2dy1-x1dy1-y1y2dx1)/(dy2dy1-dx1dy2)で終了する。 '(x1、y1)=(0,0)、(x2、y2)=(1,1)、(dx1、dy1)=(1,0)、(dx2、dy2) =(0、-1) 't2方程式の一番下に0があります。 –