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://www.mzph.cn/pingmian/44275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Quartus程序烧录

1. .sof文件烧录&#xff08;断电丢失&#xff09; &#xff08;1&#xff09;Programmer&#xff08;程序设计&#xff09; &#xff08;2&#xff09;Hardware Setup...&#xff08;硬件设置&#xff09; &#xff08;如无USB-Blaster[USB-0]&#xff0c;在Hardware Setup..…

buuctf被嗅探的流量

下载出来是一个流量分析题 因为题目说了是联网状态下 嗅探到 所以一定有http协议 这里设置过滤器 一个一个去找吧 目前感觉wireshark的题都是http,太难的也不会

Linux--深入理与解linux文件系统与日志文件分析

目录 一、文件与存储系统的 inode 与 block 1.1 硬盘存储 1.2 文件存取--block 1.3 文件存取--inode 1.4 文件名与 inode 号 ​编辑 1.5 查看 inode 号码方法 1.6 Linux 系统文件的三个主要的时间属性 1.7 硬盘分区结构 1.8 访问文件的简单了流程 1.9 inode 占用 1.…

适配各种IT场景的零信任沙箱

在当今数字化时代&#xff0c;网络安全威胁层出不穷&#xff0c;传统的安全防御策略已难以应对日益复杂的网络攻击。零信任与沙箱技术的结合&#xff0c;作为一种新兴的安全防护策略&#xff0c;正逐渐受到企业和组织的青睐。本文将深入探讨零信任结合沙箱技术所能解决的问题及…

odoo视图继承

odoo视图继承 在模型时候&#xff0c;不对视图、菜单等进行修改&#xff0c;原视图和菜单等视图数据仍然可以使用&#xff0c;不需要重新构建 form视图继承案例 model&#xff1a;为对应模型 inherit_id&#xff1a;为继承的视图&#xff0c;ref:为继承视图的id&#xff0…

高考完的假期想学c语言要注意那些问题?

c语言算是现代编程语言里面比较简单的一个&#xff0c;对于高考刚考完的学生来说确实很适合刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全…

ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享

ChatGPT高质量prompt技巧分享pdf&#xff0c; ChatGPT提问获取高质量答案的艺术pdf。本书是一本全面的指南&#xff0c;介绍了各种 Prompt 技术的理解和利用&#xff0c;用于从 ChatGPTmiki sharing中生成高质量的答案。我们将探讨如何使用不同的 Prompt 工程技术来实现不同的目…

类与对象-继承-构造和析构顺序

构造和析构顺序 #include<iostream> using namespace std;class Base { public:Base(){cout << "Base构造函数" << endl;}~Base(){cout << "Base析构函数" << endl;} };class Son :public Base { public:Son(){cout <&l…

移动UI:发现页面,是什么,有啥作用,该如何设计呢?

移动应用中的“发现页面”通常用于向用户展示新的内容、功能、活动或推荐信息&#xff0c;以帮助用户发现和探索应用中的新内容或功能。设计一个好的发现页面可以提升用户对应用的兴趣和粘性。 以下是设计发现页面时可以考虑的一些要点&#xff1a; 1. 推荐内容&#xff1a; …

Conformal low power-1.概述

概述 设计师们越来越期望更长的电池寿命和更高的性能。由于漏电流的增加&#xff0c;使用90纳米及更小工艺节点制造的设备在不使用时的功耗与使用时相同。设计师们可以针对漏电流和动态功耗进行优化&#xff0c;这可以减少能源使用并降低冷却和封装成本。额外的高级低功耗方法…

视觉语言模型:融合视觉与语言的未来

1. 概述 视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;是能够同时处理和理解视觉&#xff08;图像&#xff09;和语言&#xff08;文本&#xff09;两种模态信息的人工智能模型。这种模型结合了计算机视觉和自然语言处理的技术&#xff0c;使得它们能够在…

基于SAM的零样本相似性评价方法

文章目录 介绍方法SAM编码器相似性指标代码复现介绍 图像转换具有广泛的应用,如风格转换和模态转换,通常是生成具有高度真实和忠实的图像。这些问题仍然很困难,特别是在保存语义结构很重要的时候。传统的图像级相似性度量的用途有限,因为图像的语义是高级的,并且不受对原…

简单分享下利用python做测试的学习方向

做为一名转行过来的工程师&#xff0c;我想分享一下这些年来&#xff0c;我对于技术是怎样晋升的&#xff0c;我是在职&#xff0c;边上班边利用时间学习起来的&#xff0c;也听过很多业内人的分享&#xff08;简单可以总结以下几点&#xff0c;分享给大家碎片的式学习方式&…

ESP32网络开发:1.创建一个基于TCP网络协议的网站

一、TCP协议的介绍 TCP&#xff08;传输控制协议&#xff0c;Transmission Control Protocol&#xff09;是互联网协议套件中的一种核心协议&#xff0c;主要用于在网络中的计算机之间可靠地传输数据。TCP协议位于OSI模型&#xff08;开放系统互联模型&#xff09;的传输层&…

「7.9更新日志」JVS·智能BI、逻辑引擎(服务编排)功能更新说明

项目介绍 JVS是企业级数字化服务构建的基础脚手架&#xff0c;主要解决企业信息化项目交付难、实施效率低、开发成本高的问题&#xff0c;采用微服务配置化的方式&#xff0c;提供了 低代码数据分析物联网的核心能力产品&#xff0c;并构建了协同办公、企业常用的管理工具等&am…

java使用poi-tl模版引擎导出word之列表循环数据渲染

目录 1.模版制作2.开启spring表达式3.编写关键代码接口4. 导出结果 poi-tl模版引擎中&#xff0c;如果区块对的值是一个非空集合&#xff0c;区块中的文档元素会被迭代渲染一次或者N次&#xff0c;这取决于集合的大小&#xff0c;类似于foreach语法。 1.模版制作 在静态资源目…

[ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)

[ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议&#xff08;ICVISP 2024&#xff09; 2024 International Conference on Virtual Reality, Image and Signal Processing 最新消息ICVISP 2024-已通过ACM出版申请投稿免费参会&#xff0c;口头汇报或海报展示(可获得…

品牌推广的要素有哪些?探寻最佳实践方法

作为一个手工酸奶品牌的创始人&#xff0c;目前全国复制了100多家门店。我来和大家分享下品牌推广的基本要素&#xff0c;以及最佳实践方法&#xff01; 一、品牌推广基本要素 1、目标市场分析 品牌推广的第一步就是明确目标市场。先了解目标受众的年龄、性别、消费习惯、有…

centos在GitHub上下载代码

1、安装git yum install -y git2、下载 git clone https://github.com/dji-sdk/Payload-SDK3、若遇到 centos 7 git clone 报错&#xff1a;fatal: unable to access解决方法&#xff1a; 3.1、 打开/etc/hosts文件&#xff1b;命令&#xff1a;sudo vim /etc/hosts 3.2、 添…

MFC扩展库BCGControlBar Pro v35.0 - 可视化管理主题等全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.0已全新发布了&#xff0c;这个版本改进类Visual Studio 2022的视觉主题、增强对多个…