1
我正在试图从数组中获取最近的2个点。查找数组中的2个最近点数
在这里,我只得到cosest。 (i + = 6因为我将位置和颜色保存到数组)但是我怎么能得到最接近的?
nIdx = 0;
float dst1;
float dst2 = sqrt(vert[0] - x) + sqrt(vert[1] - y);
for (int i = 6; i < vert.length; i+=6) {
dst1 = sqrt(vert[i] - x) + sqrt(vert[i+1] - y);
if (dst2 > dst1) {
nIdx = i;
dst2 = dst1;
}
}
我tryed做到这一点:
if (dst2 > dst1) {
n2Idx = nIdx;
nIdx = i;
dst2 = dst1;
}
这确实在某些情况下工作。但如果nIdx
确实挥舞拳头指数。 n2Idx
不会更改为nIdx
的最后一个。
那么我认为我somethink错:
float dst1 = sqrt(vert[0] - x) + sqrt(vert[1] - y);
float dst2 = sqrt(vert[6] - x) + sqrt(vert[7] - y);
for (int i = 0; i < vert.length; i+=6) {
float dst = sqrt(vert[i] - x) + sqrt(vert[i+1] - y);
//noinspection StatementWithEmptyBody
if (dst >= dst2) {
} else if (dst <= dst1) {
dst2 = dst1;
dst1 = dst;
} else {
dst2 = dst;
}
}
你的意思是用招什么,我怎么可能让数组的索引。 –
@DarioKowalski“move”与“assign”相同。要获得索引,请将'ind1'和'ind2'与'dst1'和'dst2'一起存储。每当你对'dstX'做些什么时,对'indX'做同样的事情。 – dasblinkenlight
它在某些情况下做了些工作,但有时候都会到索引0。 –