0
如何通过距离点的距离对向量进行排序? 例如我有三个矢量:A,B,C和点寻找距离最近的向量点
Example image with point and vectors
而排序的结果必须是这样的:(A,C,B)
如何通过距离点的距离对向量进行排序? 例如我有三个矢量:A,B,C和点寻找距离最近的向量点
Example image with point and vectors
而排序的结果必须是这样的:(A,C,B)
好的,这是更多的是数学问题,但是让我在这里解释一下。看看这张照片:
让我们通过矢量一个的起点和通过该线段其一端在箭头结束运行载体定义线段。对于其他分部B和C分别同样有效。点P作为坐标也是一个向量。
现在让我们让线性代数成为我们的朋友,然而却是编程高效的。 :-)
在一个可以做到这一点段的实例,并与其他分别为:
而是节约的距离,尽量保存和比较平方距离达,分贝和DC和比较这些来代替。这将节省您计算可能变得非常昂贵的平方根。
下面是一些伪代码:
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
希望它可以帮助有点...
你的意思是位置矢量w.r.t.起源? – 11thdimension
我没有更完整地描述它。我需要按照关卡的层次对其进行分类。在这张图片http://i.imgur.com/WHi9sja.png上的结果是(B,A)意味着B是第一级,而A是第二级Wrt点 – user2890234
你的问题看起来更像是你呼叫的线段的距离向量。但是矢量每个维度只有一个坐标。你可以按照长度排列向量。 –