Matlab:求出n边凹多边形内角
求凹多边形内角
我们常见的多边形多为凸多边形,即其每个内角θ小于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边凹多边形内角相关推荐
- matlab矩阵保存到表格,将matlab求出的矩阵保存在Excel表格中
将matlab求出的矩阵保存在Excel表格中 转贴Genial分享程序 function xlswrite(m,header,colnames,filename); % xlswrite Easil ...
- 如何用matlab求出覆冰图像像素点,输电线路覆冰图像的Canny算子改进算法研究
输电线路覆冰图像的Canny算子改进算法研究 摘 要: 每到冬季 关键词: 形态学滤波; Canny算子; 边缘检测; 覆冰检测; 微分算子 中图分类号:TM755 文献标志码:A文章编号:1006- ...
- 已知 方程 用 matlab 求表达式,已知自变量,因变量和函数表达式,可以用matlab求出函数表达式中的未知参数吗...
答:这不是解方程,这是曲线拟合.如果你的已知的dr,R只有一个点,那么你的未知数是有无数个解的. cftool,拟合函数有一个选项是自定义函数. 答:用polyfit函数,即多项式拟合函数 设x=X- ...
- matlab求出过冲的最大幅值,频谱分析为什么最大幅值处频率为0?
这是我的程序 function [wa]=Wa0(x0,y0) syms t tao [m,~]=size(x0); %求xx的维数 xx=0:0.001:13; %定义绘图坐标轴 t=0:0.0 ...
- matlab求曲线每点的斜率_如何用matlab求出图中各条直线的斜率
展开全部 1.瞬时斜率62616964757a686964616fe4b893e5b19e31333431373236:求导. 方法:d(k)=(u(k)-u(k-1))/T(k);d(0)=0; d ...
- matlab求桌子频率,怎样用matlab求出桌子的边缘曲线和开槽长度
匿名用户 1级 2014-09-14 回答 L=120; %长 D=50; %宽,圆桌面直径 d=2.5; %木板宽 hL=L/2; %半长 R=D/2; %圆桌面半径 y=-R+d/2:d ...
- Matlab求出图像中每个细胞的细胞核与核仁面积之比代码
clc;clear;close all; img = imread('1.bmp'); I = rgb2gray(img); figure(1),imshow(I) level =graythresh ...
- matlab怎么求两个数的和,matlab怎么求出两个函数的交点
matlab中,两个自变量的函数怎么求最大值(急!1) 需求:利用matlab求解二元函数y=f(x1,x2)=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01 ...
- matlab中精确求零点,matlab求零点
数值计算方法第四章 计算函数零点和极值点的迭代法 本章讨论非线性方程(组)的求解问题 2/80 4.1 不动点迭代法及其收敛性 1.不动点设非线性方程组 f(x) =...... matlab求解零状 ...
- Matlab 散点 拟合 曲率,有数据点,希望得到一条拟合曲线,再求出这条曲线的曲率,求助!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 得到X,Y的数据点后,我尝试用origin7.5的analysis-fit sigmoidal功能拟合出曲线,由于方程太复杂,用公式计算很困难,我想用or ...
最新文章
- 数据结构源码笔记(C语言):线性表的顺序表示
- 解读谷歌事件中的失语症现象
- java i o中文版_Java文件I/O的三种方法
- c语言程序设计黄保和第二章,C语言程序设计答案(黄保和编)第6章
- s2 安恒 漏洞验证工具_Struts2漏洞利用工具下载(更新2017-V1.8版增加S2-045/S2-046)
- 实验16 编写包含多个功能子程序的中断例程
- python 命令行 解析模块 optparse、argparse
- php速度优化,php优化及高效提速问题小结
- 如何在几天时间内快速理解一个陌生行业?
- 在虚拟机中安装Linux系统
- android高德地图热力图,热力图-自有数据图层-示例中心-JS API 示例 | 高德地图API...
- # Maven错误Error executing Maven
- Spring源码解析之AOP篇(三)----Spring开启AOP的两种方式
- Python — sklearn 分类效果评估
- 基于深度学习股票预测系统
- 高性价比蓝牙耳机推荐,五款便宜又好用的真无线蓝牙耳机
- 商家入驻天猫商城需要多少钱 天猫入住有哪些常见问题
- 数据预处理常用方法流程
- 写个.net开发者的Linux迁移指南
- 三星SAIT China Lab招聘研究员(校招/社招)及实习生