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),'r>');
elseif r<0
plot(p(i,1),p(i,2),'bs');
end
end plot(p(:,1),p(:,2),'k');
p=circshift(p,1);
plot(p(:,1),p(:,2),'k');

main.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

createSimplyPoly.m

有时需要对多边形各顶点的凹凸性做判断。

先计算待处理点与相邻点的两个向量,再计算两向量的叉乘,根据求得结果的正负可以判断凹凸性。

结果为负则为凹顶点,为正则为凸顶点。

凹顶点用"bs"表示,凸顶点用"r>"表示。

[matlab] 11.多边形凹凸性检测的更多相关文章

  1. 机动车驾驶员计时培训系统符合性检测平台TCP服务器设计和开发

    驾校计时平台的TCP服务器,主要用于接入计时终端,计时终端与计时平台.计时平台与省级监管服务平台.省级监管服务平台与全国驾培平台的卫星定位过程明细数据和学时过程明细数据接口应使用基于JT/T 808标 ...

  2. matlab练习程序(SUSAN检测)

    matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...

  3. AABB和平面的相交性检测

    [AABB和平面的相交性检测]

  4. PCL—点云分割(基于凹凸性) 低层次点云处理

    博客转载自:http://www.cnblogs.com/ironstark/p/5027269.html 1.图像分割的两条思路 场景分割时机器视觉中的重要任务,尤其对家庭机器人而言,优秀的场景分割 ...

  5. JT/T 1077-2016《道路运输车辆卫星定位系统车载视频平台技术要求》平台标准符合性检测合同

    合同编号: 道路运输车辆卫星定位系统 平台标准符合性检测合同 委托方(甲方): 受托方(乙方): 交通运输通信信息工程质量检测中心 签订时间: 签订地点: 北京市 委托方(甲方): 委托方(甲方): ...

  6. iOS 11之Vision人脸检测

    代码地址如下:http://www.demodashi.com/demo/11783.html 大道如青天,我独不得出 前言 在上一篇iOS Core ML与Vision初识中,初步了解到了visio ...

  7. 括号匹配性检测C语言实现

    #include <stdio.h> #define SIMPLE_KUOHAO "(()1231qeqw)(@#$)" #define COMPLEX_KUOHAO ...

  8. 使用Java、Matlab画多边形闭合折线图

    由于写论文要将“哈密顿回路问题(TSP)”的求解中间结果表示出来,查了一下使用程序画多边形图形.现在在总结一下,这个图是“由给定节点首尾相连的”闭合多边形. 1.使用matlab作闭合多边形图 没有找 ...

  9. poj1584 A Round Peg in a Ground Hole 判断多边形凹凸,点到线的距离【基础计算几何】

    大致思路:首先对于所给的洞的点,判断是否是凸多边形,图形的输入和输出可以是顺时针或者逆时针,而且允许多点共线 Debug 了好几个小时,发现如下问题 判断三点是否共线,可用斜率公式判断 POINT p ...

随机推荐

  1. redis复制

    一.官网解释 redis支持简单且易用的主从复制 ( master-slave replication )功能,改功能可以让服务器 ( slave server ) 成为主服务器 ( master s ...

  2. 【Spring】27、JPA 实现乐观锁@Version注解的使用

    持久层使用jpa时,默认提供了一个注解@Version来实现乐观锁 简单来说就是用一个version字段来充当乐观锁的作用.先来设计实体类 /** * Created by xujingfeng on ...

  3. C#设计模式之十七中介者模式(Mediator Pattern)【行为型】

    一.引言 今天我们开始讲“行为型”设计模式的第五个模式,该模式是[中介者模式],英文名称是:Mediator Pattern.还是老套路,先从名字上来看看.“中介者模式”我第一次看到这个名称,我的理解 ...

  4. hihoCoder编程练习赛67

    题目1 : 序列 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个正整数 n, P,求满足以下两个条件的长度为 n 的序列 ai 个数: 1. 1 ≤ ai ≤ ...

  5. Python 执行 mysql 存储过程

    mysql 创建简单的临时表 tmp create database test; use test; DROP TABLE IF EXISTS `tmp`; CREATE TABLE `tmp` ( ...

  6. 小tips:JS语法之标签(label)

    JavaScript语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下. label: statement 标签可以是任意的标识符,但是不能是保留字,语句 ...

  7. 中国最强AI超级服务器问世,每秒提供AI计算2000万亿次

    https://mp.weixin.qq.com/s/1EVczHp11OJ4GEjeE3z5cA 业内唯一以“AI计算”为核心的人工智能大会昨天发布了一份重要报告. 9月12日,<中国AI计算 ...

  8. Linux内核线程的思考与总结

    1.内核线程,只是一个称呼,实际上就是一个进程,有自己独立的TCB,参与内核调度,也参与内核抢占. 这个进程的特别之处有两点,第一.该进程没有前台.第二.永远在内核态中运行. 2.创建内核线程有两种方 ...

  9. ViewPager结合view无限滑动

    使用viewPager进无限滑动,这里的实现是在适配器里面进行,当然在外头使用滑动监听也行. import android.support.v4.view.PagerAdapter; import a ...

  10. loadrunner 脚本录制-录制选项设置HTML-based URL-based Script

    脚本录制-录制选项设置, HTML-based Script与URL-based Script by:授客 QQ:1033553122 Access:Vugen->Tool->Record ...