求凹多边形内角

我们常见的多边形多为凸多边形,即其每个内角θ小于180°的多边形。而凹多边形的一些内角θ大于180°。在Matlab求多边形内角时,通常已知条件是多边形所有顶点的坐标。若是一般的凸多边形,我们可以使用相邻三点的坐标,将其视为三角形的三个顶点,求出两边夹角,即多边形顶点的内角。公式如下:


或者将这三点视为两条向量,通过点积与范数来计算向量之间的夹角。公式如下:

使用手算时,对于凹多边形的内角,只需找到相应的内角,使用 360°-θ即可。然而,Matlab在用以上公式进行计算时,并不能识别出哪个内角是凹或凸,计算出来的结果都是凸的内角,小于180°。因此,需要通过其他功能函数先判断内角的凹凸性质,才能正确计算出凹多边形的内角。
Matlab社区里面已经有大佬Are Mjaavatten将判断内角凹凸性质写成一个功能函数:convex,可以在matlab官网上登录后直接下载下来调用。
在Matlab社区File Exchange内可以搜索到许多大佬贡献的优秀功能函数,推荐在里面找到一些便利的扩展函数。

% ps包含着多边形的坐标的nx2矩阵
c = convex(ps); % convex函数是判断对应顶点内角是否大于180°
for k = 1 : size(ps, 1)-2point1 = ps(k, :);vertex = ps(k+1, :);point2 = ps(k+2, :);v1 = point1 - vertex;v2 = point2 - vertex;   % 使用点积与范数求角度,需要用c值判断内角是否大于180°theta(k) = dot(v1, v2)/(norm(v1)*norm(v2));  % dot点积函数,norm范数取模函数if c(k)>0  angle(k) = (acos(theta(k)))*180/pi;elseangle(k) = 360 - (acos(theta(k)))*180/pi;end
end

完整代码

Matlab:获取图形边缘轮廓,将轮廓图形n等分,并求出n边凹多边形内角

Matlab:求出n边凹多边形内角相关推荐

  1. matlab矩阵保存到表格,将matlab求出的矩阵保存在Excel表格中

    将matlab求出的矩阵保存在Excel表格中 转贴Genial分享程序 function xlswrite(m,header,colnames,filename); % xlswrite Easil ...

  2. 如何用matlab求出覆冰图像像素点,输电线路覆冰图像的Canny算子改进算法研究

    输电线路覆冰图像的Canny算子改进算法研究 摘 要: 每到冬季 关键词: 形态学滤波; Canny算子; 边缘检测; 覆冰检测; 微分算子 中图分类号:TM755 文献标志码:A文章编号:1006- ...

  3. 已知 方程 用 matlab 求表达式,已知自变量,因变量和函数表达式,可以用matlab求出函数表达式中的未知参数吗...

    答:这不是解方程,这是曲线拟合.如果你的已知的dr,R只有一个点,那么你的未知数是有无数个解的. cftool,拟合函数有一个选项是自定义函数. 答:用polyfit函数,即多项式拟合函数 设x=X- ...

  4. matlab求出过冲的最大幅值,频谱分析为什么最大幅值处频率为0?

    这是我的程序 function [wa]=Wa0(x0,y0) syms t tao [m,~]=size(x0);  %求xx的维数 xx=0:0.001:13;  %定义绘图坐标轴 t=0:0.0 ...

  5. matlab求曲线每点的斜率_如何用matlab求出图中各条直线的斜率

    展开全部 1.瞬时斜率62616964757a686964616fe4b893e5b19e31333431373236:求导. 方法:d(k)=(u(k)-u(k-1))/T(k);d(0)=0; d ...

  6. matlab求桌子频率,怎样用matlab求出桌子的边缘曲线和开槽长度

    匿名用户 1级 2014-09-14 回答 L=120;  %长 D=50;   %宽,圆桌面直径 d=2.5;  %木板宽 hL=L/2; %半长 R=D/2;  %圆桌面半径 y=-R+d/2:d ...

  7. Matlab求出图像中每个细胞的细胞核与核仁面积之比代码

    clc;clear;close all; img = imread('1.bmp'); I = rgb2gray(img); figure(1),imshow(I) level =graythresh ...

  8. matlab怎么求两个数的和,matlab怎么求出两个函数的交点

    matlab中,两个自变量的函数怎么求最大值(急!1) 需求:利用matlab求解二元函数y=f(x1,x2)=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01 ...

  9. matlab中精确求零点,matlab求零点

    数值计算方法第四章 计算函数零点和极值点的迭代法 本章讨论非线性方程(组)的求解问题 2/80 4.1 不动点迭代法及其收敛性 1.不动点设非线性方程组 f(x) =...... matlab求解零状 ...

  10. Matlab 散点 拟合 曲率,有数据点,希望得到一条拟合曲线,再求出这条曲线的曲率,求助!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 得到X,Y的数据点后,我尝试用origin7.5的analysis-fit sigmoidal功能拟合出曲线,由于方程太复杂,用公式计算很困难,我想用or ...

最新文章

  1. 数据结构源码笔记(C语言):线性表的顺序表示
  2. 解读谷歌事件中的失语症现象
  3. java i o中文版_Java文件I/O的三种方法
  4. c语言程序设计黄保和第二章,C语言程序设计答案(黄保和编)第6章
  5. s2 安恒 漏洞验证工具_Struts2漏洞利用工具下载(更新2017-V1.8版增加S2-045/S2-046)
  6. 实验16 编写包含多个功能子程序的中断例程
  7. python 命令行 解析模块 optparse、argparse
  8. php速度优化,php优化及高效提速问题小结
  9. 如何在几天时间内快速理解一个陌生行业?
  10. 在虚拟机中安装Linux系统
  11. android高德地图热力图,热力图-自有数据图层-示例中心-JS API 示例 | 高德地图API...
  12. # Maven错误Error executing Maven
  13. Spring源码解析之AOP篇(三)----Spring开启AOP的两种方式
  14. Python — sklearn 分类效果评估
  15. 基于深度学习股票预测系统
  16. 高性价比蓝牙耳机推荐,五款便宜又好用的真无线蓝牙耳机
  17. 商家入驻天猫商城需要多少钱 天猫入住有哪些常见问题
  18. 数据预处理常用方法流程
  19. 写个.net开发者的Linux迁移指南
  20. 三星SAIT China Lab招聘研究员(校招/社招)及实习生

热门文章

  1. 计算机视频解码测试,无底限测试 入门电脑挑战H.265视频解码
  2. python cartopy绘制中国区域(包含国界、省界、十段线以及海南诸岛)
  3. iOS 安装包瘦身 (上篇)
  4. C++ Primer 第5版习题答案
  5. 远程控制---实验九:IPC远程植入木马
  6. SpringBoot动态获取项目部署的端口号
  7. 流行技术产生的根源-阿朱吕建伟的个人观察
  8. 寻迹pid算法 c语言,基于STC12C5A60S2单片机及PID控制算法的气味循迹车设计
  9. 双核心星形结构IP城域网的路由规划与配置实践
  10. 爬虫-Scrapy(二) 爬取糗百笑话-单页