zoukankan      html  css  js  c++  java
  • matlab练习程序(多边形顶点凹凸性)

    生成简单多边形后,有时还需要对多边形各顶点的凹凸性做判断。

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

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

    凹顶点用o表示,凸顶点用*表示。

    结果如下:

    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
  • 相关阅读:
    水平居中
    flex布局
    get新技能:上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误
    小程序3.8
    小程序3.7
    Vue 中select option默认选中的处理方法
    HTML5 data属性
    静态html返回
    node中可读流、可写流
    node.js fs、http使用
  • 原文地址:https://www.cnblogs.com/tiandsp/p/4006575.html
Copyright © 2011-2022 走看看