c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决

        有需求需要对。多边形 获取中心点方法,绝大多数都是 puthon和java版本。立体几何学中的知识。

封装函数


point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() <= 2)return point();auto Area = [](point p0, point p1, point p2) {double area = 0.;area = p0.x * p1.y + p1.x * p2.y +p2.x * p0.y - p1.x * p0.y -p2.x * p1.y - p0.x * p2.y;return area / 2;};point p0 = polygon[0];point p1 = polygon[1];point p2;double sumarea = 0, sumx = 0, sumy = 0;for (int i = 2; i < polygon.size(); i++){p2 = polygon[i];double area = Area(p0, p1, p2);//求三角形的面积sumarea += area;sumx += (p0.x + p1.x + p2.x) * area; //求∑cx[i] * s[i]和∑cy[i] * s[i]sumy += (p0.y + p1.y + p2.y) * area;p1 = p2;//求总面积}point barycenter;barycenter.x = sumx / sumarea / 3;barycenter.y = sumy / sumarea / 3;return barycenter;
}

业务使用


std::vector<point> polygonDataList;for (int n = 0; n < data.size(); n++)
{point pointData;double lng = data.at(n).toArray().at(0).toDouble();double lat = data.at(n).toArray().at(1).toDouble();pointData.x = lng;pointData.y = lat;polygonDataList.push_back(pointData);lineString += QString::number(lng) + " " + QString::number(lat) + ",";
}QString strTmp = lineString.remove(lineString.size() - 1, 1);
lineStringData = "POLYGON ((" + strTmp + "))";qlistData.append(lineStringData);m_polygonDataArrayList.append(polygonDataList);

 定义

typedef struct point {double x = 0.;double y = 0.;
}point;/*** @breif  : 计算中心点函数* @param  : QList* @return : void* @date   : 2024/05/11 17:24*/point getCenterOfGravity(std::vector<point> polygon);// 中心坐标数据std::vector<point> m_polygonDataList;QList<std::vector<point>> m_polygonDataArrayList;

取中点测试 情况

        

// 方案一, 中心点 不准确  
//point data = getCenterOfGravity(pointData);
// 方案二, 取数据的中心点
int middleInt = (int)ceil(pointData.size() / 2);//qDebug() << "middleInt" << middleInt;
point data = pointData.at(middleInt);polygonDataList.push_back(data);

 

        测试总结,其实  使用 数组取中间点,是面的中心点,如果是线的中心点,直接 数组的中间值,就是 线的中心点。

参考网址

        【C++】计算多边形的重心_求不规则区域中心点(重心)的c++算法-CSDN博客

        【中心】不规则多边形中心、形心、外接矩形中心计算方法_polygon 计算中心-CSDN博客

          JAVA代码计算多边形的几何中心点-阿里云开发者社区 

         in_polygon-阿里云帮助中心_(Open Search)-阿里云帮助中心

        查询地理多边形范围 - 表格存储 - 阿里云

        空间几何函数的基本语法 - 日志服务 - 阿里云

        polygon——关于多边形的重心_polygon重心-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3226752.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C#知识|账号管理系统:UI层-添加账号窗体设计思路及流程。

哈喽,你好啊,我是雷工! 前边练习过详情页窗体的设计思路及流程: 《C#知识|上位机UI设计-详情窗体设计思路及流程(实例)》 本节练习添加账号窗体的UI设计,以下为学习笔记。 01 效果展示 02 添加窗体 在UI层添加Windows窗体,设置名称为:FrmAddAcount.cs 设置窗体属…

检测管道有没有水的传感器-管道液位传感器

如今&#xff0c;随着生活方式的多样化和科技的进步&#xff0c;检测管道液位的需求变得愈发重要。特别是在诸如扫地机器人、洗地机、饮水机等设备中&#xff0c;确保管道中是否存在水是关键的功能之一。针对这一需求&#xff0c;市场上涌现出多种先进的管道液位传感器&#xf…

移动应用:商城购物类,是最常见的,想出彩或许就差灵犀一指

在移动应用中&#xff0c;商城购物类的非常常见&#xff0c;模式也非常成熟&#xff0c;想要设计的出彩也是有难度的&#xff0c;这次分享一些不同的。

项目收获总结--Redis的知识收获

一、概述 最近几天公司项目开发上线完成&#xff0c;做个收获总结吧~ 今天记录Redis的收获和提升。 二、Redis异步队列 Redis做异步队列一般使用 list 结构作为队列&#xff0c;rpush 生产消息&#xff0c;lpop 消费消息。当 lpop 没有消息的时候&#xff0c;要适当sleep再…

迁移至 AI-Ready 基础架构:日立内容平台至 MinIO

借助我们的 HCP-to-MinIO 工具&#xff0c;从 Hitachi Content Platform &#xff08;HCP&#xff09; 过渡到 MinIO 从未如此简单。该工具旨在支持客户不断变化的存储需求&#xff0c;可在 GitHub 上免费获得&#xff0c;大大简化了迁移过程。许多组织正在转型&#xff0c;以利…

supOS助力油气行业数智化转型

在油气行业&#xff0c;高温高压、易燃易爆的特殊环境对生产安全和效率提出了极高的要求。传统工厂管理模式往往存在信息孤岛、决策滞后、响应速度慢等问题&#xff0c;难以适应现代工业化发展的需求。 从传统工厂到智能工厂&#xff0c;首先要实现企业经营运营自动化和生产过程…

新声创新20年:无线技术给助听器插上“娱乐”的翅膀

听力损失并非现代人的专利&#xff0c;古代人也会有听力损失。助听器距今发展已经有二百多年了&#xff0c;从当初单纯的声音放大器到如今的全数字时代助听器&#xff0c;助听器发生了翻天覆地的变化&#xff0c;现代助听器除了助听功能&#xff0c;还具有看电视&#xff0c;听…

uni-app/vue项目如何封装全局消息提示组件

效果图&#xff1a; 第一步&#xff1a;封装组件和方法&#xff0c;采用插件式注册&#xff01; 在项目目录下新建components文件夹&#xff0c;里面放两个文件&#xff0c;分别是index.vue和index.js. index.vue&#xff1a; <template><div class"toast&quo…

漏洞挖掘思路分享 | 首次尝试cnvd捡洞

因为那天项目刚忙完闲来无事&#xff0c;尝试捡个cnvd洞&#xff0c;cnvd录取要五千万资产&#xff0c;自己又懒得找毕竟捡洞嘛&#xff0c;索性去cnvd上进行搜集 直接开搜弱口令&#xff0c;因为我比较喜欢有登录框的站&#xff0c;这样搜索出来的资产可能就更容易进行挖掘 随…

闲鱼电商API接口:精确搜索商品详情的利器

随着互联网的快速发展&#xff0c;电商平台日益普及&#xff0c;用户对购物体验的要求也越来越高。在众多电商平台上&#xff0c;闲鱼作为国内领先的二手交易平台&#xff0c;用户量庞大&#xff0c;商品种类繁多&#xff0c;为了提高用户购物体验&#xff0c;联讯数据闲鱼推出…

【工具】咸鱼小助手,一款咸鱼之王辅助工具

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ Github&#xff1a;咸鱼之王的自动化脚本&#xff0c;自动答题、爬塔、领资源等 下载&#xff1a;(密码:9u22) 咸鱼小助手 文档&#xff1a;腾讯文档 视…

如何才能半个月学习完自动化测试,成功跳槽涨薪?

一直想写类似的文章&#xff0c;但是一直没有时间&#xff0c;正好乘此周末&#xff0c;终于可以写写我的见解了<关于如何学习自动化测试>&#xff0c;其实自动化测试的知识很宽泛&#xff0c;具体细分又可以分为&#xff1a;Web自动化测试&#xff08;PythonSelenium&am…

递归(五)—— 初识暴力递归之“如何利用递归实现栈逆序”

题目&#xff1a;要求不使用额外的数据结构&#xff0c;仅利用递归函数实现栈的逆序。 题目分析&#xff1a; 利用实例来理解题意&#xff0c;栈内元素从栈底到栈顶一次是3&#xff0c;2&#xff0c;1 &#xff0c;要求经过处理后&#xff0c;栈底到栈顶依次是1&#xff0c;2…

OpenCV中使用Canny算法在图像中查找边缘

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 算法描述 Canny算法是一种广泛应用于计算机视觉和图像处理领域中的边缘检测算法。它由John F. Canny在1986年提出&#xff0c;旨在寻找给定噪声条件下的最佳边…

NAS免费用,鲁大师 AiNAS正式发布,「专业版」年卡仅需264元

7月10日&#xff0c;鲁大师召开新品发布会&#xff0c;正式发布旗下以“提供本地Ai部署和使用能力以及在线NAS功能”并行的复合软件产品&#xff1a;鲁大师 AiNAS。 全新的鲁大师 AiNAS将持续满足现如今大众对于数字化生活的全新需求&#xff0c;将“云存储”的便捷与NAS的大容…

Power BI DAX常用函数使用场景和代码示例

Power BI函数表达式对于没有接触过的朋友可能会有些迷茫&#xff0c;花一点时间了解一下原理在学习一些常用的DAX函数&#xff0c;就可以解决工作中绝大部分问题&#xff0c;函数使用都是共同的。 以下是一些最常用的DAX函数&#xff0c;如聚合&#xff0c;计数&#xff0c;日期…

了解劳动准备差距:人力资源专业人员的战略

劳动准备差距是一个紧迫的问题&#xff0c;在全球人事部门回应&#xff0c;谈论未开发的潜力和错过的机会。想象一下&#xff0c;人才和需求之间的悬崖之间有一座桥&#xff0c;这促使雇主思考&#xff1a;我们是否为员工提供了足够的设备来应对未来的考验&#xff1f; 这种不…

【昆工主办|7月昆明】第三届绿色建筑、土木工程与智慧城市国际会议(GBCESC 2024)

随着全球城市化进程的加速&#xff0c;绿色建筑、土木工程与智慧城市等议题逐渐成为了行业内外关注的焦点。在这一背景下&#xff0c;第三届绿色建筑、土木工程与智慧城市国际会议&#xff08;GBCESC 2024&#xff09;的召开&#xff0c;无疑将为相关领域的研究者、学者及从业者…

windows防火墙端口设置

PS&#xff1a;本文实例为Windows Server 2019&#xff0c;其他Windows版本大同小异。 1、首先打开windows防火墙&#xff0c;点击“高级设置” 2、 高级设置界面 3、假设需要开放一个端口为3306应该怎么做 光标对准“入站规则”右键新建规则&#xff0c;选择“端口” 协议这…

解决Anaconda下载pytorch常见问题

1.问题一 安装完Anaconda后&#xff0c;输入conda命令&#xff0c;出现 conda不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 分析原因&#xff1a;未配置环境到系统变量 解决方法&#xff1a;将Anaconda安装路径和Anaconda目录下的Scripts文件的路径配…