如何用MATLAB计算多边形的几何中心

在MATLAB中,计算多边形的几何中心(又称质心或重心)可以通过以下步骤实现。假设你有一个多边形,其顶点按照顺时针或逆时针顺序排列在一个矩阵中。具体步骤如下:

  1. 定义多边形顶点:首先,你需要将多边形的顶点坐标存储在一个矩阵中。例如,假设你的多边形顶点为(x_{1},y_{1}),(x_{2},y_{2}),…,(x_{n},y_{n}),则可以将它们存储在一个 n×2 的矩阵 vertices 中。

  2. 计算几何中心:使用多边形顶点的坐标,通过公式计算几何中心。

多边形的几何中心坐标 (C_{x},C_{y})可以通过以下公式计算:

C_{x}=\frac{1}{6A}\sum_{i=0}^{n-1}(x_i+x_{i+1})(x_iy_{i+1}-x_{i+1}y_{i})

C_{y}=\frac{1}{6A}\sum_{i=0}^{n-1}(y_i+y_{i+1})(x_iy_{i+1}-x_{i+1}y_{i})

其中,A 是多边形的面积,计算公式为:

A=\frac{1}{2}\sum_{i=0}^{n-1}(x_iy_{i+1}-x_{i+1}y_{i})

下面是MATLAB代码,用于计算多边形的几何中心:

function [Cx, Cy] = polygonCentroid(vertices)  % Number of vertices  n = size(vertices, 1);  % Ensure the vertices are in a closed polygon (the last vertex should be the same as the first)  if ~isequal(vertices(end,:), vertices(1,:))  vertices(end+1, :) = vertices(1, :);  n = n + 1;  end  % Initialize variables for the sums  sumCx = 0;  sumCy = 0;  area = 0;  % Loop over vertices  for i = 1:n-1  x1 = vertices(i, 1);  y1 = vertices(i, 2);  x2 = vertices(i+1, 1);  y2 = vertices(i+1, 2);  % Calculate the area term  crossProduct = x1 * y2 - x2 * y1;  area = area + crossProduct;  % Calculate the sum for Cx and Cy  sumCx = sumCx + (x1 + x2) * crossProduct;  sumCy = sumCy + (y1 + y2) * crossProduct;  end  % Calculate the scaled area  area = area / 2;  % Ensure the area is not zero (to avoid division by zero)  if area == 0  error('The polygon area is zero, check the vertices.');  end  % Calculate the centroid coordinates  Cx = sumCx / (6 * area);  Cy = sumCy / (6 * area);  
end  

使用方法

clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;p =[27.6177681446901          24.427185391493126.9564380155505          27.210020771650122.7866669489879          26.987227127588422.4598242645914          26.038317261603523.6707146140053          22.206973156027527.6177681446901          24.4271853914931];[Cx, Cy] = polygonCentroid(p);
figure;
plot(p(:,1),p(:,2),'b-','LineWidth',2);
hold on;
plot(Cx, Cy,'r.','MarkerSize',20);

程序结果:

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

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

相关文章

珠宝首饰检测系统源码分享

珠宝首饰检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【时时三省】(C语言基础)指针进阶 例题8

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 第一个打印2 a6不管它是多大 前面是=s 都得变成两个字节 所以打印2 第二个打印5 sizeof里面的表达式是不参与运算的 所以打印5 上面所有例题总结…

36.贪心算法3

1.坏了的计算器(medium) . - 力扣(LeetCode) 题目解析 算法原理 代码 class Solution {public int brokenCalc(int startValue, int target) {// 正难则反 贪⼼int ret 0;while (target > startValue) {if (target % 2 0…

gcc/g++的使用:

目录 (1). 程序的翻译过程 预处理: gcc -E 源文件 编译: gcc -S 源文件 汇编:gcc -c 源文件 连接: (2) 语言的自举(也叫 编译器的自举): (3). 查看可执行程序在连接时依赖的库: ldd 可执行程序的名字 。 (4). …

指针 (六)

OK,书接上回,咱们继续: 一 . 函数指针变量 (1)函数指针变量的创建 首先我们得明白,什么是函数指针变量呢?从我们之前学习过的整型指针,数组指针的相关知识当中,通过类…

OpenAI API key not working in my React App

题意:OpenAI API 密钥在我的 React 应用中不起作用 问题背景: I am trying to create a chatbot in my react app, and Im not able to generate an LLM powered response. Ive been studying documentation and checking out tutorials but am unable …

基于STM32F407ZGT6——看门狗

独立看门狗 独立看门狗的时钟由独立的RC 振荡器LSI 提供,即使主时钟发生故障它仍然有效,非常独立。 LSI 的频率一般在30~60KHZ 之间,根据温度和工作场合会有一定的漂移, 所以独立看门狗的定时时间并不一定非常精确,只适…

国学盛典 致敬先贤 《老子与道德经》纪录片研讨会在北京善品堂国学馆圆满落幕

9月10日,《老子与道德经》纪录片研讨会在北京善品堂国学馆圆满落幕。中国著名表演艺术家、曾饰演央视86版电视剧《西游记》中“孙悟空”的六小龄童先生与两百余人传统文化传播者、践行者、爱好者齐聚一堂,共同交流。本次会议由中国文化促进会福文化工作委…

【自动驾驶】决策规划算法 | 数学基础(三)直角坐标与自然坐标转换Ⅱ

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

GoPlantUML,go代码到类图

前言 GoPlantUML 是一个开源工具,旨在简化从 Go 源代码生成 PlantUML 图的过程。使用 GoPlantUML,开发人员可以毫不费力地可视化其 Go 项目中的结构和关系,从而有助于代码理解和文档编写。通过解析 Go 源代码并生成 PlantUML 图,…

软件安全、逆向分析、加密与解密--crackme2详解

本次使用到的软件有:PEiD、IDA、X32dbg 刚学逆向不久,可能有些地方会有错误,欢迎各位大佬指导 执行 运行程序 点击About 点击确定,输入如图数据 点击try Now 点击确定,回到主界面 点击Exit,退出 查壳&a…

猫头虎分享:Python库 Pandas 的简介、安装、用法详解入门教程

🐯猫头虎分享:Python库 Pandas 的简介、安装、用法详解入门教程 摘要 今天猫头虎带大家一起来探讨Python数据分析神器——Pandas的完整入门教程!本篇博客将深入介绍Pandas的功能,从安装到基础用法,再到常见问题解决&a…

Python 课程14-TensorFlow

前言 TensorFlow 是由 Google 开发的一个开源深度学习框架,广泛应用于机器学习和人工智能领域。它具有强大的计算能力,能够运行在 CPU、GPU 甚至 TPU 上,适用于从小型模型到大规模生产系统的各种应用场景。通过 TensorFlow,你可以…

FinOps三人行:共话FinOps云成本管理与AI的未来在线分享(文字+视频)

前言: 在数字化浪潮的推动下,云成本管理(Cloud Financial Management,简称FinOps)正逐渐成为企业关注的焦点。在2024年9月4日,一场关于云成本管理与人工智能(AI)未来的深入讨论在线…

体感魂斗罗-开篇

文章目录 前言新的目标Flag 前言 黑神话悟空大火,9月14,周鸿祎在抖音平台分享了360团队用两天的业余时间将《黑神话:悟空》爆改为体感游戏的过程,通过身体动作来控制游戏中的角色,实现更加自然和直观的操作方式。 把…

2025年最新大数据毕业设计选题-基于Spark分析相关

选题思路 回忆学过的知识(Python、Java、Hadoop、Hive、Sqoop、Spark、算法等等。。。) 结合学过的知识确定大的方向 a. 确定技术方向,比如基于Hadoop、基于Hive、基于Spark 等等。。。 b. 确定业务方向,比如民宿分析、电商行为分析、天气分析等等。。。…

2025年最新大数据毕业设计选题-基于Hive分析相关

选题思路 回忆学过的知识(Python、Java、Hadoop、Hive、Sqoop、Spark、算法等等。。。) 结合学过的知识确定大的方向 a. 确定技术方向,比如基于Hadoop、基于Hive、基于Spark 等等。。。 b. 确定业务方向,比如民宿分析、电商行为分析、天气分析等等。。。…

【bug】通过lora方式微调sdxl inpainting踩坑

报错内容 ValueError: Attempting to unscale FP16 gradients. 报错位置 if accelerator.sync_gradients:params_to_clip (itertools.chain(unet_lora_parameters, text_lora_parameters_one, text_lora_parameters_two)if args.train_text_encoderelse unet_lora_parameters…

Oracle 19c异常恢复—ORA-01209/ORA-65088---惜分飞

由于raid卡bug故障,导致文件系统异常,从而使得数据库无法正常启动,客户找到我之前已经让多人分析,均未恢复成功,查看alert日志,发现他们恢复的时候尝试resetlogs库,然后报ORA-600 kcbzib_kcrsds_1错误 2024-09-15T17:07:32.55321508:00 alter database open resetlogs 2024-09-…

深入理解IP地址分类及子网划分详解

在互联网时代,IP地址是网络通信的基础。无论是访问网站、发送电子邮件,还是进行数据传输,IP地址都扮演着至关重要的角色。本文将详细解析IP地址的分类及子网划分的原理,帮助你更好地理解网络架构及其应用。 一、什么是IP地址 IP…