公式:s=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3)
当s>0时,p1,p2,p3三个点呈逆时针
当s<0时,p1,p2,p3三个点呈顺时针
#include<stdio.h>
#include<string.h>
typedef struct In{
int x,y;
};
In num[10010];
int main(){
int n,i,ans,flag;
while(scanf("%d",&n),n){
memset(num,0,sizeof(num));
for(i=0;i<n;i++){
scanf("%d%d",&num[i].x,&num[i].y);
}
num[n].x=num[0].x;
num[n].y=num[0].y;
num[n+1].x=num[1].x;
num[n+1].y=num[1].y;//判断最后两条边,一定不要忘了最后两条边!!!
for(ans=i=0;i<n;i++){
ans=(num[i].x-num[i+2].x)*(num[i+1].y-num[i+2].y)-(num[i+1].x-num[i+2].x)*(num[i].y-num[i+2].y);
if(ans<0) break;
}
if(ans<0) printf("concave\n");
else printf("convex\n");
}
return 0;
}
678

被折叠的 条评论
为什么被折叠?



