寻找最接近点的向量

Finding closest vector to point

我如何按距点的距离对向量进行排序? 例如我有三个向量:A、B、C 和点

Example image with point and vectors

排序后的结果一定是这样的:(A, C, B)

好吧,这更像是一道数学题,但无论如何让我在这里解释一下。看看这张图:

让我们用矢量 A 定义一条线段作为起点,a 作为矢量 运行 通过那条线以箭头结尾的段。同样分别对其他段 B 和 C 有效。点P作为坐标也是向量。

现在让我们将线性代数作为我们的朋友,同时提高编程效率。 :-)

在段 a 的示例中,您可以分别执行此操作和其他操作:

  1. aAP 的点积(从 A 到 P 的向量)你得到投影 projA a 上,其中 P 最接近。
  2. 如果你设置 A+ (projA)*na (na 是归一化的 a 向量)你会得到最近的点P 的向量 a
  3. 让我们设置 dA = A+projA*na - P 并根据它的长度得到最近的比较距离。

尝试存储和比较 dAdBdC[ 的平方距离,而不是保存距离=49=] 并比较它们。它将节省您计算可能变得非常昂贵的平方根。

这是一些伪代码:

vector3 AP = P-A;
vector3 projA = a.dot(AP);
vector3 nA = a.normalized();
dA = A + projA*na - P;

dA2 = dA.x*dA.x + dA.y*dA.y + dA.z*dA.z;

-> Compare and sort them by that value

希望对您有所帮助...