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=axis 相交的 y 坐标(其中 X = 0)

如果您知道线上的一个点(即 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
千伏*N + (CA)*N = 0
千伏*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 的线段怎么样?解决此问题的一种方法是以相同方式参数化定义第二条线。然后在两个未知数中求解一个由两个方程组成的系统,以找到交点。

一种更简单的方法是查看线段 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]

如果你在一张纸上画出这些点,它们应该都可以组合在一起,而且只有几个简单的表达式。

于 2010-02-05T22:03:11.107 回答