MATLAB计算多边形质心/矩心

前言:不规则四边形的中心

不规则四边形的出心有多种定义,以下是最常见的三种:
1.重心:重心是四边形内部所有顶点连线交点的平均位置。可以通过求解四个顶点坐标的平均值来找到重心。
2.质心:质心是四边形内部所有质点的平均位置,质点可以看作是无限小的质量集中点。求解四个质点的质量,然后将质量乘以对应的坐标求和,再除以总质量,即可找到质心。
3.矩心:对于二维平面上的四边形,矩心是四边形内部所有顶点坐标的中点。可以通过求解四个顶点坐标的平均值来找到矩心。

需要注意的是,这些中心点并不一定在四边形的内部。例如,在凸四边形中,重心、质心和矩心三点通常不在同一位置,而在凹四边形中,这些中心点可能位于四边形的外部,在实际应用中,根据问题的需求和四边形的特性选择合适的中心点具有重要意义。
质心和重心虽然在某些情况下可能重合(如在均匀物体中),但它们并不是总是相同的。质心更多地关注于物体的质量分布,而重心则侧重于物体的重力作用及其平衡状态。

原理

要求计算多边形的质心,首先需要明确质心的定义:质心是多边形内所有点的平均位置。
在Matlab中,可以通过以下步骤计算多边形的质心:

  • 步骤一:读取多边形数据。
    将多边形的点坐标读入Matlab中。可以使用读取文本文件的命令,也可以手动输入点的坐标
  • 步骤二:计算多边形的面积。
    用到面积公式,根据点坐标通过行列式计算得到多边形面积值。
  • 步骤三:计算多边形的重心(gravity center)。
    重心的定义是多边形内各个三角形重心的面积加权求和。通过循环遍历多边形的各个三角形,计算每个三角形的重心,再将重心坐标值与其面积值相乘,最后累加到总重心坐标值上。
  • 步骤四:计算多边形的质心(mass center)。
    由于质心是所有点的平均位置,因此可以将总重心坐标值除以多边形的面积,得到多边形的质心坐标。

MATLAB代码

图形如下:
在这里插入图片描述
MATLAB代码如下:

clc
close all
clear
%% 主函数说明-MATLAB计算多边形质心示例
pathFigure= '.\Figures\' ;

%% 

% 读取多边形点坐标
% x = [1 3 5 7 3 1];
% y = [1 1 3 8 3 6];

x = [1 3 3 1];
y = [1 1 3 3];

% 绘图1:绘制多边形形状
% ---------------------------------------------
pgon = polyshape( x , y );
A = area(pgon);                        % 计算多边形面积
P = perimeter(pgon);                % 计算多边形周长
[Cx, Cy] = centroid(pgon);         % 计算多边形矩心

figure(1)
hold on; box on;
h1 = plot(pgon);
h(2) = plot(Cx, Cy,'o','Color',[255,61,0]/255,'Markersize',6);
axis equal;                                % 设置坐标系比例相等,保持正确显示多边形
set(gca,'FontSize',14,'FontName','Times New Roman');   

str= strcat(pathFigure, "Fig.1", '.tiff');
print(gcf, '-dtiff', '-r600', str);

参考

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python机器学习库(numpy库)

文章目录 Python机器学习库(numpy库)1. 数据的维度2. numpy基础知识2.1 numpy概述2.1 numpy概述2.1 numpy概述2.2 numpy库的引用 3. ndarray数组的创建3.1 N维数组对象ndarray3.2 创建ndarray数组3.2.1 使用Python列表、元组创建ndarray数组3.2.2 使用nu…

029 命令行传递参数

1.循环输出args字符串数组 public class D001 {public static void main(String[] args) {for (String arg : args) {System.out.println(arg);}} } 2.找打这个类的路径,打开cmd cmd C:\Users\Admin\IdeaProjects\JavaSE学习之路\scanner\src\com\yxm\demo 3. 编译…

Servlet+Ajax实现对数据的列表展示(极简入门)

目录 1.准备工作 1.数据库源(这里以Mysql为例) 2.映射实体类 3.模拟三层架构(Dao、Service、Controller) Dao接口 Dao实现 Service实现(这里省略Service接口) Controller层(或叫Servlet层…

2024济南生物发酵展:会议日程安排和技术装备亮点预告

2024济南发酵展/2024生物发酵展/2024山东发酵展/2024济南生物制药展/2024生物技术展/2024食品设备展/2024食品加工展/2024济南细胞工程展 由中国生物发酵产业协会主办,上海信世展览服务有限公司承办的2024第12届国际生物发酵产品与技术装备展览会(济南&a…

深入理解Istio服务网格数据平面Envoy

一、服务网格概述(service mesh) 在传统的微服务架构中,服务间的调用,业务代码需要考虑认证、熔断、服务发现等非业务能力,在某种程度上,表现出了一定的耦合性 服务网格追求高级别的服务流量治理能力,认证、熔断、服…

2023.12 淘天-数科 已offer

文章目录 岗位信息1面ld 12.17 1H2面 VP 12.18 40min3面 HR 12.2012.21offer薪资方案沟通 岗位信息 1面ld 12.17 1H (是一个从业估计很长时间前辈,很平和,感觉能学到很多东西) 自我介绍项目深究1.说下自己工作里最有成就感的事和…

图论练习3

内容:过程中视条件改变边权,利用树状数组区间加处理 卯酉东海道 题目链接 题目大意 个点,条有向边,每条边有颜色和费用总共有种颜色若当前颜色与要走的边颜色相同,则花费为若当前颜色与要走的边颜色不同,…

MYSQL——MySQL8.3无法启动

在新电脑上装了个MySQL,但是无法使用net start mysql启动,很是纳闷,使用mysqld --console去查看报错,也是没报错的,但是奇怪的是,我输入完这个mysqld --console之后,就等于启动了mysql了&#x…

第十一篇【传奇开心果系列】Python的OpenCV技术点案例示例:三维重建

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例系列短博文目录一、前言二、OpenCV三维重建介绍三、基于区域的SGBM示例代码四、BM(Block Matching)算法介绍和示例代码五、基于能量最小化的GC(Graph Cut)算法介绍和示例代码六、相机标定介绍和示例代码七…

【数据结构与算法】之排序系列-20240203

这里写目录标题 一、628. 三个数的最大乘积二、645. 错误的集合三、747. 至少是其他数字两倍的最大数四、905. 按奇偶排序数组五、922. 按奇偶排序数组 II六、976. 三角形的最大周长 一、628. 三个数的最大乘积 简单 给你一个整型数组 nums ,在数组中找出由三个数组…

Leetcode刷题笔记题解(C++):36. 有效的数独

思路一:暴力破解,两个二维数组记录行、列对应的数字出现的次数,比如rows[i][index]表示的数字index在i行出现的次数,三维数组记录每个块中对应数字出现的次数,比如boxes[i/3][j/3][index]表示的数字index在[i/3][j/3]个…

Hugging Face推出自定义AI聊天Assistants;谷歌推出图像生成工具 ImageFX

🦉 AI新闻 🚀 谷歌推出图像生成工具 ImageFX 摘要:谷歌在 Imagen 2 的基础上推出新的图像生成工具 ImageFX,通过简单的文字提示可以生成高质量图像。该工具包含了提示界面,让用户可以快速尝试创作和想法的相邻维度。…

数据结构—基础知识:哈夫曼树

文章目录 数据结构—基础知识:哈夫曼树哈夫曼树的基本概念哈夫曼树的构造算法哈夫曼树的构造过程哈夫曼算法的实现算法:构造哈夫曼树 数据结构—基础知识:哈夫曼树 哈夫曼树的基本概念 哈夫曼(Huffman)树又称最优树&…

通过 ChatGPT 的 Function Call 查询数据库

用 Function Calling 的方式实现手机流量包智能客服的例子。 def get_sql_completion(messages, model"gpt-3.5-turbo"):response client.chat.completions.create(modelmodel,messagesmessages,temperature0,tools[{ # 摘自 OpenAI 官方示例 https://github.com/…

ASP.NET Core 自定义解压缩提供程序

写在前面 在了解ASP.NET Core 自定义请求解压缩中间件的应用时,依据官方文档操作下来碰到了几个问题,这边做个记录。 关键点就是配置 Content-Encoding,参数需要和代码中添加的提供程序的Key保持一致; builder.Services.AddRequ…

问题:媒体查询语法中, 可用设备名参数表示“文档打印或预览“的是 #媒体#媒体#其他

问题:媒体查询语法中, 可用设备名参数表示"文档打印或预览"的是 A、C.?screen B.?projection C、A.?print D.?speech 参考答案如图所示

Unity DOTS中的baking(三)过滤baking的输出

Unity DOTS中的baking(三)过滤baking的输出 默认情况下,在conversation world(baker和baking system运行的环境)下产生的所有entities和components,都会作为baking环节的输出。在baking结束时,U…

使用Arcgis对欧洲雷达高分辨率降水数据重投影

当前需要使用欧洲高分辨雷达降水数据,但是这个数据的投影问题非常头疼。实际的投影应该长这样(https://gist.github.com/kmuehlbauer/645e42a53b30752230c08c20a9c964f9?permalink_comment_id2954366https://gist.github.com/kmuehlbauer/645e42a53b307…

代码随想录刷题笔记 DAY 18 | 找树左下角的值 No.513 | 路经总和 No.112 | 从中序与后序遍历序列构造二叉树 No.106

Day 18 01. 找树左下角的值(No. 513) 题目链接 代码随想录题解 1.1 题目 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入…

网络安全挑战:威胁建模的应对策略与实践

在数字威胁不断演变的时代,了解和降低网络安全风险对各种规模的组织都至关重要。威胁建模作为安全领域的一个关键流程,提供了一种识别、评估和应对潜在安全威胁的结构化方法。本文将深入探讨威胁建模的复杂性,探索其机制、方法、实际应用、优…