首页 > 其他分享 >判断是否为凸多边形

判断是否为凸多边形

时间:2023-11-07 23:34:49浏览次数:24  
标签:判断 polygon 是否 凸多边形 len 算法 var 顶点

所有内角都在(0, 180)的多边形为凸多边形(Convex),否则为凹多边形(Concave)。

 

顶点顺序逆时针

 

顶点顺序顺时针

 

 

//是否为凸多边形
public static bool IsConvexPolygon(Vector2[] polygon)
{
    int len = polygon.Length;
    for (int i = 0; i < len; ++i) //顶点顺序为顺时针
    {
        var a = polygon[i];
        var b = polygon[(i + 1) % len];
        var c = polygon[(i + 2) % len];
        var ba = a - b;
        var bc = c - b;
        float cross = V2Cross(ref ba, ref bc);
        if (cross <= 0)
            return false;
    }
    return true;
}

 

参考

【计算几何】凸多面体重叠判断算法:GJK 算法详解 & C++代码实现二维情形的凸多边形重叠判断_gjk算法-CSDN博客

 

标签:判断,polygon,是否,凸多边形,len,算法,var,顶点
From: https://www.cnblogs.com/sailJs/p/17807775.html

相关文章

  • 【Azure Key Vault】是否有直接方法将Azure Key Vault中的机密名称/机密值到处成文件
    问题描述是否有直接方法将AzureKeyVault中的机密名称/机密值导出,保存为一个文件呢? 问题解答AzureKeyVault没有直接提供Secret导出文件(如xlsx格式)的方式或者工具。不过可以通过SDK将Secret列举出来并获取到所有的密钥对,保存为所需要的文件格式。在Secrets页面即有各种语言的......
  • 【Azure Key Vault】是否有直接方法将Azure Key Vault中的机密名称/机密值到处成文件
    问题描述是否有直接方法将AzureKeyVault中的机密名称/机密值导出,保存为一个文件呢? 问题解答AzureKeyVault没有直接提供Secret导出文件(如xlsx格式)的方式或者工具。不过可以通过SDK将Secret列举出来并获取到所有的密钥对,保存为所需要的文件格式。在Secrets页面即有各种......
  • 判断一个数是否为质数
    #include<stdio.h> intmain(){   intnum=17;   intisPrime=1;      for(inti=2;i<=num/2;i++){       if(num%i==0){           isPrime=0;           break;       }   }      ......
  • linux(redhat系列 rpm软件管理)中确认是否安装指定的安装包
     001、rpm-qa|grep"packagename";例如:[root@pc1~]#rpm-qa|grep"wget"##确认是否安装了wget命令wget-1.14-18.el7_6.1.x86_64[root@pc1~]#rpm-qa|grep"lsb"##确认是否安装了lsb命令redhat-lsb-pr......
  • PySpark判断Hdfs文件路径是否存在
    背景从ScalaSpark代码转PySpark代码,同时实现连续读多个文件,避免因某些路径不存在导致程序终止。在Scala的Spark中可以直接导下面两个模块的包importorg.apache.hadoop.conf.Configurationimportorg.apache.hadoop.fs._然后调用方法就可以实现对hdfs的文件判断了valfs=......
  • js判断url是否可用
    问题需要判断url是否可用,再去执行其他操作,代码如下:constloadScript=(url)=>{returnnewPromise((resolve,reject)=>{constscript=document.createElement('script')script.onload=()=>resolve(true)script.onerror=()=>resolve(fa......
  • 圆与OBB矩形是否相交
    1) 以矩形的中心作为原点,建立坐标系。2) 算出矩形的旋转角度,然后将矩形和圆都旋转回去。3) 就可以按照普通的圆与矩形是否相交来判断了。  关于圆心旋转后的坐标计算先求出oc与x轴的夹角,然后根据旋转角度就可计算出c'的坐标c'.x=r*cos(θ+θ2),c'.y=r*sin(......
  • 判断一个数是否是水仙花数
    #include<stdio.h>intmain(){intm,a,b,c,d;scanf_s("%d",&m);a=(int)(m/100);b=(int)((m-a100)/10);c=(int)(m-100a-10b);d=(a*aa)+(b*bb)+(c*cc);//printf("%d%d%d%d%d",m,a,b,c,d);if(m==d){......
  • js判断数据类型最准确的方法之一
    functiongetType(data){consttype=Object.prototype.toString.call(data);letres='';switch(type){case'[objectObject]':res='Object';break;case'[objectArray]':res=&......
  • 视频集中存储/云存储EasyCVR启动后查询端口是否被占用出错,该如何解决?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能......