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);

参考

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

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

相关文章

2 物理层(二):数据编码和调制

目录 1 数据编码和调制1.1 数字数据的数字信号编码1、常见概念2、二进制数字数据的数字信号编码方法 1.2 模拟数据的数字信号编码1、脉冲振幅调制(PAM)2、脉冲编码调制(PCM)3、采样频率 1.3 数字数据的模拟调制1.4 模拟数据的模拟…

HarmonyOS 鸿蒙应用开发(十、第三方开源js库移植适配指南)

在前端和nodejs的世界里,有很多开源的js库,通过npm(NodeJS包管理和分发工具)可以安装使用众多的开源软件包。但是由于OpenHarmony开发框架中的API不完全兼容V8运行时的Build-In API,因此三方js库大都需要适配下才能用。 移植前准备 建议在适…

深度测评:ONLYOFFICE 桌面编辑器 v8.0新功能

目录 前言 一、PDF表单处理:提升办公效率 二、RTL(从右到左)支持:满足不同语言习惯 三、Moodle集成:教育行业的新助力 四、本地界面主题:个性化办公体验 五、性能优化与稳定性提升 六、性能与稳定性…

《dx12 龙书》第四部分学习笔记——预备知识(下)

7、多重采样技术的原理 由于屏幕中显示的像素不可能是无穷小的,所以并不是任意一条直线都能在显示器上“平滑”而完美地呈现出来。即为以像素矩阵 (matrix of pixels, 可以理解为“像素2D数组”)逼近直线的方法所产生的“阶梯” &…

Linux安全技术与iptables防火墙

一.安全技术: 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,…

【leetcode热题100】搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…

Java技术栈全解析,选修选课系统新篇章

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

MATLAB环境下用于提取冲击信号的几种解卷积方法

卷积混合考虑了信号的时延,每一个单独源信号的时延信号都会和传递路径发生一 次线性瞬时混合;解卷积的过程就是找一个合适的滤波器,进行反卷积运算,得到源信号的近似解。 声音不可避免的会发生衍射、反射等现象,所以&…

JavaScript中call、apply、bind方法的应用与区别

在JavaScript中,call、apply和bind是函数的三个重要方法,它们虽然功能不同,但都可以用来改变函数的执行上下文或者传递参数。本文将分别介绍call、apply和bind方法的应用和区别,并附带示例代码。 一、call方法 call方法的作用是…

假期刷题打卡--Day26

1、MT1212乘法表 请编写一个简单程序,输出九九乘法表。输入n,就输出乘法表到n的地方。 格式 输入格式: 输入整型 输出格式: 输出整型。形式如:1*11 样例 1 输入: 5输出: 1*11 2*12 …

LeetCode、17. 电话号码的字母组合【中等,dfs回溯】

文章目录 前言LeetCode、17. 电话号码的字母组合【中等,dfs回溯】题目与类型思路递归回溯优化:StringBuilder来回溯补充代码:2024.1.31(简化) 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博…

next项目页面性能调优

next项目页面性能调优 一般来说性能优化可以分为加载时、运行时两部分的优化。 扩展参考链接: 前端性能优化 24 条建议 Webpack 4进阶–从前的日色变得慢 ,一下午只够打一次包 Webpack 分包优化首屏加载 参考指标 FCP(First Contentful P…