判断一个图形是否为凹多边形(2)

顺着多边形的边往下 判断(比如是逆时针方向),如果新的点出现在上条边的右边,则肯定是凹的。

我以前写了个 判断所有顶点凹凸性的程序:
//   返回值:按输入顺序返回多边形顶点的凸凹性 判断,bc[i]=1,iff:第i个顶点是凸顶点  
void   checkconvex(int   vcount,POINT   polygon[],bool   bc[]) 
{ 
      int   i,index=0; 
      POINT   tp=polygon[0]; 
      for(i=1;i <vcount;i++)                 // 寻找第一个凸顶点,最下的顶点肯定是 
            { 
                  if(polygon[i].y <tp.y||(polygon[i].y   ==   tp.y&&polygon[i].x <tp.x)) 
                        { 
                                tp=polygon[i]; 
                                index=i; 
                        } 
            } 
      int   count=vcount-1; 
      bc[index]=1; 
      while(count)     // 判断凸凹性,叉乘,实际上就是判断边的拐弯方向 
{                                                                           
      if(multiply(polygon[(index+1)%vcount],polygon[(index+2)%vcount],polygon[index])> =0   ) 
                        bc[(index+1)%vcount]=1; 
                  else 
                        bc[(index+1)%vcount]=0; 
                  index++; 
                  count--; 
            } 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值