向量叉积的运用!
向量a,向量b:
1. a×b>0 , 以向量a为始边,向量b在a的逆时针方向
2. a×b<0 , 顺时针方向
3. a×b=0, a,b平行,向量方向可能相同,可能不同.
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)==1&&n)
{
int x1,y1,x2,y2,x3,y3;
int flag=0;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
int x0=x1,y0=y1,x=x2,y=y2;
for(int i=2;i<n;i++)
{
scanf("%d %d",&x3,&y3);
int ax=x2-x1,ay=y2-y1;
int bx=x3-x2,by=y3-y2;
if(!flag)
if(ax*by-ay*bx<0)
flag=1;
x1=x2,y1=y2,x2=x3,y2=y3;
}
if(!flag)
{
int ax=x3-x2,ay=y3-y2;
int bx=x0-x3,by=y0-y3;
if(ax*by-ay*bx<0)
flag=1;
}
if(!flag)
{
int ax=x0-x3,ay=y0-y3;
int bx=x-x0,by=y-y0;
if(ax*by-ay*bx<0)
flag=1;
}
if(flag)
printf("concave\n");
else printf("convex\n");
}
return 0;
}