给定一个向量 a,我如何缩放另一个单位向量,使其与垂直于向量 a 的线相交?

Given a vector, a, how can I scale another unit vector so that it meets with the line that is perpendicular to vector a?

我知道如何使用直角三角形来做到这一点:我想要的向量的长度将是 vector a 的大小除以 vector a 和给定单位向量之间夹角的余弦值。一旦我找到这个值,我就可以简单地按这个长度缩放单位向量。

假设归一化 vector a 和给定单位向量的点积大于 0,我如何仅使用向量数学求出这个长度?下面是一张图片,以帮助说明我正在尝试做的事情。我想要将作为单位向量的红色向量缩放,直到它与垂直于 vector a.

的白线相交

我们从绿色向量 a 和红色单位向量 r 开始。

标准化 a 得到一个单位向量,我们称之为 k:

k = a/|a|

现在将 r 投影到 k 上以获得 r 方向的分量a,称它为x(等于ra夹角的余弦值) .

x = r · k = (1/|a|)(r · a)

现在我们使用相似三角形:

|R|/|a| = |r|/x = 1/x

|R| = |a|/x

R = |R|r = (|a |/x)r = (|a|2/(r · a))r