从数组中找到2个最近的点

达里奥·科瓦尔斯基(Dario Kowalski)

我正在尝试将2个最近的点从数组中移到另一个点。

在这里,我只会感到胆小。(i + = 6,因为我将POSITION和COLOR保存到数组中)但是,如何才能使2.最接近?

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;
    }
}

我尝试这样做:

if (dst2 > dst1) {
    n2Idx = nIdx;
    nIdx = i;
    dst2 = dst1;
}

在某些情况下确实可以。但是如果nIdx要拳头索引。n2Idx不会更改为的最后一个nIdx

好吧,我想我做错了:

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;
    }
}
谢尔盖·卡里尼琴科(Sergey Kalinichenko)

dst1dst2视作有序对,即dst1较小和dst2较大(或两个距离相等)。当您遍历点列表时,请计算候选距离dst,然后执行以下操作之一:

  • 如果dst大于或等于dst2,则不执行任何操作
  • 如果dst小于或等于dst1,移动dst1dst2和分配dstdst1
  • 否则,分配dstdst2

在环路的建成dst1dst2将有两个最小距离:

index ind1 = 0;
index ind2 = 6;
float dst1 = sqrt(vert[ind1] - x) + sqrt(vert[ind1+1] - y);
float dst2 = sqrt(vert[ind2] - x) + sqrt(vert[ind2+1] - y);
// Make sure dst1 and dst2 are ordered to begin with
if (dst2 < dst1) {
    float td = dst1;
    dst1 = dst2;
    dst2 = td;
    ind1 = 6;
    ind2 = 0;
}
// Start loop at 12, because we have processed the first two indexes
for (int i = 12 ; i < vert.length; i += 6) {
    float dst = sqrt(vert[i] - x) + sqrt(vert[i+1] - y);
    if (dst >= dst2) {
        continue;
    }
    if (dst <= dst1) {
        dst2 = dst1;
        ind2 = ind1;
        dst1 = dst;
        ind1 = i;
    } else {
        dst2 = dst;
        ind2 = i;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数组中找到2个最近的点

来自分类Dev

如何编写一个函数来在 Java 中的 2D 维数组中找到 2 个最近的点?

来自分类Dev

如何在点数组中找到离另一个点最近的点

来自分类Dev

在python中找到最近的点

来自分类Dev

在二维平面中找到与P点最近的K个点

来自分类Dev

如何在MATLAB中找到两个凸包之间的最近点?

来自分类Dev

如何在MATLAB中找到两个凸包之间的最近点?

来自分类Dev

在数组中找到最近的数字

来自分类Dev

如何从几个 numpy 数组中找到两个最近的 numpy 数组?

来自分类Dev

如何在x,y点的2D数组中找到第一个极值?

来自分类Dev

从php中的数组中找到最近的下一个日期

来自分类Dev

找到两个最近的点的邻居

来自分类Dev

在numpy数组中找到平衡点

来自分类Dev

在2个数组中找到相交处

来自分类Dev

如何在2个多维数组中找到公共值

来自分类Dev

在带有圆的2D空间中找到任意点[x,y]的圆的最近自由位置

来自分类Dev

在具有[x,y]点的数组中找到一个矩形

来自分类Dev

在numpy数组中找到第三个元素最大的点

来自分类Dev

如何在通用类型的数组中找到三个点的中位数(未排序)?

来自分类Dev

对于给定的点,如何在点列表中找到最近的点?

来自分类Dev

如何在嵌套数组JavaScript中找到最近的元素?

来自分类Dev

在Spark中找到两个表之间的最近时间

来自分类Dev

在C#中找到k个最近的邻居

来自分类Dev

如何在python中找到2D数组的关键点?

来自分类Dev

在C ++中找到2D数组的极值点的最佳方法?

来自分类Dev

从n个元素的数组中找到等于或接近其元素总和的2个子数组

来自分类Dev

2D数组最近点坐标

来自分类Dev

如何在数组中找到2个元素并以PHP形式返回数组?

来自分类Dev

如何找到最近的N个网格点(贪心)

Related 相关文章

  1. 1

    从数组中找到2个最近的点

  2. 2

    如何编写一个函数来在 Java 中的 2D 维数组中找到 2 个最近的点?

  3. 3

    如何在点数组中找到离另一个点最近的点

  4. 4

    在python中找到最近的点

  5. 5

    在二维平面中找到与P点最近的K个点

  6. 6

    如何在MATLAB中找到两个凸包之间的最近点?

  7. 7

    如何在MATLAB中找到两个凸包之间的最近点?

  8. 8

    在数组中找到最近的数字

  9. 9

    如何从几个 numpy 数组中找到两个最近的 numpy 数组?

  10. 10

    如何在x,y点的2D数组中找到第一个极值?

  11. 11

    从php中的数组中找到最近的下一个日期

  12. 12

    找到两个最近的点的邻居

  13. 13

    在numpy数组中找到平衡点

  14. 14

    在2个数组中找到相交处

  15. 15

    如何在2个多维数组中找到公共值

  16. 16

    在带有圆的2D空间中找到任意点[x,y]的圆的最近自由位置

  17. 17

    在具有[x,y]点的数组中找到一个矩形

  18. 18

    在numpy数组中找到第三个元素最大的点

  19. 19

    如何在通用类型的数组中找到三个点的中位数(未排序)?

  20. 20

    对于给定的点,如何在点列表中找到最近的点?

  21. 21

    如何在嵌套数组JavaScript中找到最近的元素?

  22. 22

    在Spark中找到两个表之间的最近时间

  23. 23

    在C#中找到k个最近的邻居

  24. 24

    如何在python中找到2D数组的关键点?

  25. 25

    在C ++中找到2D数组的极值点的最佳方法?

  26. 26

    从n个元素的数组中找到等于或接近其元素总和的2个子数组

  27. 27

    2D数组最近点坐标

  28. 28

    如何在数组中找到2个元素并以PHP形式返回数组?

  29. 29

    如何找到最近的N个网格点(贪心)

热门标签

归档