matlab练习程序(多边形顶点凹凸性)
2014-10-05 00:06
232 查看
生成简单多边形后,有时还需要对多边形各顶点的凹凸性做判断。
先计算待处理点与相邻点的两个向量,再计算两向量的叉乘,根据求得结果的正负可以判断凹凸性。
结果为负则为凹顶点,为正则为凸顶点。
凹顶点用o表示,凸顶点用*表示。
结果如下:
![](http://images.cnitblog.com/blog/340413/201410/042324565034552.jpg)
matlab代码如下:
createSimplyPoly.m
先计算待处理点与相邻点的两个向量,再计算两向量的叉乘,根据求得结果的正负可以判断凹凸性。
结果为负则为凹顶点,为正则为凸顶点。
凹顶点用o表示,凸顶点用*表示。
结果如下:
![](http://images.cnitblog.com/blog/340413/201410/042324565034552.jpg)
matlab代码如下:
clear all;close all;clc; n=20; p=rand(n,2); p=createSimplyPoly(p); %创建简单多边形 hold on; for i=1:n if i==1 %处理第一个点 v1=p(n,:)-p(1,:); %当前点到前一点向量 v2=p(2,:)-p(1,:); %当前点到后一点向量 elseif i==n %最后一个点 v1=p(n-1,:)-p(n,:); v2=p(1,:)-p(n,:); else %其他点 v1=p(i-1,:)-p(i,:); v2=p(i+1,:)-p(i,:); end r=det([v1;v2]); %叉乘后第三个向量的方向 if r>0 plot(p(i,1),p(i,2),'*'); elseif r<0 plot(p(i,1),p(i,2),'o'); end end plot(p(:,1),p(:,2)); p=circshift(p,1); plot(p(:,1),p(:,2));
createSimplyPoly.m
function p=createSimplyPoly(p) cen=mean(p); ang=atan2(p(:,1)-cen(1),p(:,2)-cen(2)); %每个点到坐标中心极角 p=[p,ang]; p=sortrows(p,3); %按极角排序 p=p(:,1:2); end
相关文章推荐
- matlab练习程序(射线法判断点与多边形关系)
- matlab练习程序(构造简单多边形)
- matlab练习程序(简单多边形的核)
- matlab练习程序(PCA<SVD>)
- matlab练习程序(图像旋转,最邻近插值)
- matlab练习程序(读入灰度图像序列)
- matlab练习程序(生成高斯图像)
- matlab练习程序(最大中值滤波)
- matlab练习程序(白平衡<灰度世界算法>)
- matlab练习程序(图像放大/缩小,最邻近插值)
- matlab练习程序(图像水平/竖直移动)
- matlab练习程序(透视变换)
- 【转】多边形顺、逆时针,面积以及顶点凹凸性
- matlab练习程序(PCA)
- matlab练习程序(感知哈希对比图片)
- matlab练习程序(图像错切)
- matlab练习程序(最大均值滤波)
- matlab练习程序(图像加噪,各种滤波)
- matlab练习程序(彩虹编码伪彩色化)
- matlab练习程序(Harris角点检测)