1

A、B、C の座標を知っています。また、C から始まるベクトル V も知っています。

ベクトルが A と B と交差することはわかっていますが、i を見つける方法がわかりません。

この問題を解決するための手順を説明できる人はいますか?

どうもありがとう。

http://img34.imageshack.us/img34/941/triangleprob.png

4

3 に答える 3

3

A と B がわかれば、線分 AB の方程式がわかり、V もわかると言ったので、線分 V の方程式を作成できます。

ライン AB の式:

  (bx-ax)(Y-ay) = (by-ay)(X-ax)

ベクトルの方向 (または勾配 = m) と、ベクトル上の任意の点がわかると、ベクトル V の直線の方程式は次のようになります。

Y = mX = b

ここで、m は直線の傾きまたは方向、b は縦方向の y= 軸 (X = 0) と交差する y 座標です。

線上の点がわかっている場合 (つまり、C = (s, t))、b を次のように解きます。

t = ms + b ==> b = t - ms

だから方程式は

Y = mX + t-ms
于 2010-02-05T20:58:24.750 に答える
1
i = C+kV
N を線分 A,B の法線と呼び、N = [-(BA).y, (BA).x]
また、線上の任意の点について:
(PA)*N = 0 -- 上記の 1 行目から置き換えます。
(C+kV-A)*N = 0
(kV+CA)*N = 0
kV*N + (CA)*N = 0
kV*N = (AC)*N
k = [(AC)*N]/V*N
k が得られたので、上記の 1 行目にプラグインして i を取得します。

ここでは * を使用して内積を表しているため、通常の乗算​​に拡張されています。

k = ((Ax-Cx)*-(By-Ay) + (Ay-Cy)*(Bx-Ax)) / (Vx*-(By-Ay) + Vx*(Bx-Ax))
Ix = Cx + k*Vx
Iy = Cy + k*Vy

何かを台無しにしない限り....

于 2010-02-05T21:22:08.807 に答える
0

単純な代数。難しいのは基本的な方程式を書き留めることだけですが、書き留めておけばあとは簡単です。

点 C = [c_x,c_y] から発し、ベクトル V = [v_x,v_y] に沿った点を定義できますか? このような線を表す良い方法は、パラメトリック表現を使用することです。したがって、

V(t) = C + t*V

ベクトル要素に関しては、次のようになります。

V(t) = [c_x + t*v_x, c_y + t*v_y]

これがどのように機能するかを見てください。t = 0 の場合、点 C が返されますが、t の値がそれ以外の場合は、直線上の別の点が得られます。

AとBを通る線分はどうでしょうか。この問題を解決する 1 つの方法は、同じ方法で 2 番目の線をパラメトリックに定義することです。次に、2 つの未知数の 2 つの連立方程式を解いて交点を見つけます。

より簡単なアプローチは、線分 AB の法線ベクトルを見ることです。そのベクトルは次のように与えられます

N = [b_y - a_y , a_x - b_x]/sqrt((b_x - a_x)^2 + (b_y - a_y)^2)

ここで、N は単位ノルムを持つように定義されていることに注意してください。

では、点がたまたま A と B を結ぶ線上にあるかどうかは、いつわかるのでしょうか? これは簡単です。これは、以下で定義される内積が正確にゼロの場合に発生します。

dot(N,V(t) - A) = 0

これを展開し、パラメータ t について解きます。ドット積を使用して書き留めることができます。

t = dot(N,A-C)/dot(N,V)

または、必要に応じて、

t = (N_x*(a_x - c_x) + N_y*(a_y - c_y)) / (N_x*v_x + N_y*v_y))

t が得られたら、V(t) を上記の式に代入します。このすべての作業を実際に見てみましょう。いくつかの点 A、B、C とベクトル V を選びます。

A = [7, 3]
B = [2, 5]
C = [1, 0]

V = [1, 1]

正規化後の法線ベクトル N は、次のようになります。

N = [0.371390676354104, 0.928476690885259]

ライン パラメータ t は次のようになります。

t = 3.85714285714286

そして、交点を次のように見つけます

C + t*V = [4.85714285714286, 3.85714285714286]

1 枚の紙に点をプロットすると、すべてが収まり、いくつかの単純な式だけになります。

于 2010-02-05T22:03:11.107 に答える