根据点之间的距离排序?

2023-12-05

我有一个由 3 个点 A、B 和 C 组成的向量,我想根据这些点之间的距离对该向量进行排序,假设最大距离是 B 和 C 之间的距离,而不是 C 和 A 之间的距离以及最后的 A 和 B 之间的距离:

我怎样才能做到这一点 ???

std::sort(vectorName.begin(), vectorName.end(), 
          [](const cv::Point2f &a, const cv::Point2f &b)
          {
              cv::Point2f diff = a-b;
             return  cv::sqrt(diff.x*diff.x + diff.y*diff.y); // I know it doesn't make a sense but how can I do this 
          });

如果问题改写:获取排序向量中点之间的所有曼哈顿距离:

#include <algorithm>
#include <vector>
#include <iostream>

struct Point { int x; int y; };
struct ManhattanDistance {
    std::size_t a;
    std::size_t b;

    int value;

    ManhattanDistance(std::size_t index_a, const Point& a, std::size_t index_b, const Point& b)
    :   a(index_a), b(index_b), value(abs(b.x - a.x) + abs(b.y - a.y))
    {}

    operator int () const { return value; }
};

inline std::ostream& operator << (std::ostream& stream, const ManhattanDistance& x) {
    return stream << x.a << " - " << x.b << ": " << x.value;
}

int main()
{
    typedef std::pair<std::size_t, std::size_t> Pair;
    std::vector<Point> points = { {0,0}, {2,2}, {3,3}, {4,4}, {5,5} };
    std::vector<ManhattanDistance> distances;
    distances.reserve(points.size() * (points.size() - 1) / 2);
    for(std::size_t a = 0; a < points.size() - 1; ++a) {
        for(std::size_t b = a + 1; b < points.size(); ++b) {
            distances.push_back(ManhattanDistance(a, points[a], b, points[b]));
            std::cout << "Add: " << distances.back() << std::endl;
        }
    }
    std::sort(distances.begin(), distances.end(), std::greater<ManhattanDistance>());
    for(const auto& d: distances) std::cout << "Sorted: "  << d << '\n';
    std::cout << std::endl;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据点之间的距离排序? 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 在 Windows 服务中模拟用户

    我正在尝试使用以本地系统帐户登录的服务来模拟 Windows 服务中的域用户 到目前为止 我只能通过记录服务并使用用户凭据设置进程来使其工作 如下所示 ProcessStartInfo startInfo new ProcessStartI
  • SwiftUI ForEach 刷新使视图弹出

    我有这样的事情 import SwiftUI struct Overview View ObservedObject var firstArray FirstArray var body some View Group ScrollView
  • 在 C# 中解析 C 头文件

    我正在使用 Visual Studio C 我需要解析 C 头文件以仅提取有关其中包含的函数声明的信息 对于每个函数 我需要名称 返回类型及其参数 如果可能的话 我希望参数按照它们在函数声明中出现的顺序排列 我在网上看到过有关使用 Visu
  • Angular2:ng2-file-upload:无法使用 SystemJS 正确加载它

    我正在使用 systemJS 来管理我的包 因此我已将这些行添加到我的 systemjs 的配置文件中 map ng2 file upload node modules ng2 file upload packages ng2 file u
  • 有没有一个好的 IDE 可以用 Python 构建 GUI 应用程序 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我是一名初学者程序员 在过去的几个月里 我通过使用 delphi 学到了迄今为 止所知道的大部分知识 大约一个月前 我决定尝试一下 python 因
  • Android Gallery(查看)视频(还有缩略图问题)

    目前我们有一个图库视图 我们需要向其中添加图像 视频的缩略图 如果我们已经有了图像 视频的 content URI 我们如何获取已经生成的缩略图 本机图库应用程序显示的缩略图 我们使用的是Android 1 6 Video Thumbnai
  • 为什么显式生命周期注释会触发双重可变借用错误?

    给出的例子为 fn main let v 0u64 let mut a A x hello to string y v a hello a world struct A lt a gt x String y a u64 impl lt a
  • 使用 Jersey 客户端的 HTTPS

    如何使用 Jersey Client API 将 GET 请求发送到在 HTTPS 协议上运行的服务器 有我可以使用的示例代码吗 像这样构建你的客户端 HostnameVerifier hostnameVerifier HttpsURLCo
  • IIS 服务器和 ASP.Net Core - 500.19,httpplatformhandler 标记上的错误代码为 0x8007000d

    当我尝试使用 IIS Server v7 5 启动 ASP Net Core 应用程序时 出现以下错误 我已成功将网站 Visual Studio 中的文件系统选项 发布到特定目录 它可以从 approot web cmd 文件正常启动 但
  • 为 Android 标记信息窗口添加图像

    我正在制作一个 Android 应用程序 在此应用程序中 有一些酒店的标记 当用户单击标记信息窗口时会出现 它应该如下图所示 这是一个网络应用程序 我的导航抽屉片段中有一个列表视图 地图片段有标记 这是我尝试加载信息窗口图像之前的代码Mai
  • Cython 是否提供任何相当简单且有效的方法来迭代 Numpy 数组,就好像它们是扁平的一样?

    假设我想实现 Numpy 的 x 1 在赛通 我可以写 cython boundscheck False cython wraparoundcheck False def add1 np ndarray np float32 t ndim
  • 如何在 HTML5 中播放 3gp 视频?

    使用 HTML5 播放 3gp 文件不起作用 我有 Firefox 16 和 Chromium Version 22 我得到的结果如下 找不到格式和 MIME 类型受支持的视频 这是我使用的代码
  • 替换来自 stdin bash 的 Curl 请求中的 JSON 正文

    我正在尝试使用来自标准输入的输入填充卷曲请求正文中的一个变量 echo 123 curl d query match number XPOST url com 不幸的是 没有被替换 我希望请求的正文与以下内容相匹配 query match
  • 使用 smtp 时 Hotmail SSL3 版本号错误

    我正在尝试使用 python 中的 hotmail smtp 服务器 但是 我的登录尝试出现了明显的 SSL3 版本号错误 如何更改我正在使用的版本以及如何调查此问题 gt gt s connect smtp live com 587 22
  • matplotlib 中的垂直线和水平线

    我不太明白为什么我无法在指定的限制内创建水平和垂直线 我想用这个框绑定数据 然而 双方似乎并没有遵守我的指示 为什么是这样 CREATING A BOUNDING BOX BOTTOM HORIZONTAL plt axhline y 4
  • Rails 中的求和与分组

    我有一个这样定义的表 Name Order Widget Count Bob 12311 6 Nancy 12555 8 BoB 87573 12 Nancy 12929 4 我想这样检索它们 Bob 18 Nancy 12 即 它们的小部
  • VB.Net(或 C#)2008 多线程导入

    我希望构建一个多线程文本导入工具 通常是 CSV 到 SQL Server 2005 并希望在 VB NET 中执行此操作 但我并不反对 C 我有 VS 2008 试用版 只是不知道从哪里开始 谁能指出我可以在哪里查看和使用源代码的方向VE
  • 将 T-SQL string_agg 转换为 LINQ C#

    我正在尝试将 T SQL 查询转换为 LINQ 我的查询 SELECT l Id s SystemSerial v LicenseVersion l CreatedDate STRING AGG sf Name as Features FR
  • 使用 jQuery 的日期选择器突出显示特定范围内的日期

    我需要突出显示开始日期和结束日期之间的日期 我应该能够指定这些日期 谁能帮我 您可以使用演出日之前活动 对于需要在日历中显示的每个日期都会调用它 它传入一个日期并返回一个数组 0 isSelectable 1 cssClass 2 Some
  • 根据点之间的距离排序?

    我有一个由 3 个点 A B 和 C 组成的向量 我想根据这些点之间的距离对该向量进行排序 假设最大距离是 B 和 C 之间的距离 而不是 C 和 A 之间的距离以及最后的 A 和 B 之间的距离 我怎样才能做到这一点 std sort v