c - 查找二维 vector 数组中的右上元素

标签 c sorting

我有一个由 9 个 vector 组成的数组,它们组成了一个 3x3 点阵。 现在我想找到最“左上角”(标记为O)和最“右上角”(标记为D)的元素。 整个东西不是矩形的,并且数组没有排序。所以它可能看起来像这样:

array[0] x= 771 y=324
array[1] x= 968 y=323
array[2] x= 868 y= 397
array[3] x= 1065 y= 368
array[4] x= 1164 y= 326
array[5] x= 768 y= 470
array[6] x= 966 y= 471
array[7] x= 1000 y= 452
array[8] x= 1165 y= 472

O----x----D
|    |    |
|    |    |
x----x----x
|    |    |
|    |    |
x----x----x

我真的不知道从哪里开始。我是否同时比较 x 和 y?

   FindD(int& x, int& y)
    {
      for (int i = 0; i < array.size(); i++)
      {
        for (int j = 0; j < array.size(); j++)
        {
          if(i != j)
          {

            //compare the array elements
          }

        }
      }
    }

FindO(int& x, int& y)

编辑:我应该指出,这些点不是任意放置在平面上的。它们始终以 3x3 图案出现,但点之间的距离存在一些像素差异。此外,整个图案可能会稍微旋转。 这实际上就是为什么我想找到最右上角和最左边的元素。获取旋转角度。

最佳答案

O----x----D
|    |    |
|    |    |
T----x----T
|    |    |
|    |    |
x----x----x

假设“稍微旋转”意味着上面标记为 T 的点的 y 值不能高于您要查找的点,并假设您的坐标从左下角开始并不断增加y 值向上,x 值向右增加:

找到 y 值最高的三个点,其中 x 值最低的点是左边的点。

关于c - 查找二维 vector 数组中的右上元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40585906/

相关文章:

php - 对 woocommerce 中的追加销售进行排序

c - realloc 和 malloc 函数

c - 并行程序的时间计算

c++ - SSE指令中的UnsignedSaturate是什么意思?

sorting - 在 F# 中对元组内的值进行排序

java - 使用比较器实例化 TreeMap,该比较器应该能够访问所述 TreeMap

c - ruby 1.8 中缺少函数

c - 停止 bool 的宏扩展

python - 查找范围内的数字二等分python

java - 如何根据用户从下拉菜单中选择的参数对 Java 对象列表进行排序?