本来只要知道逆时针下,每个新增点的拐向都为逆时针就很容易做的说,不过自己太粗心………………首先拐向判断写错
然后又少判断第一个顶点这个角…………
#include<iostream>
using namespace std;
class cor{
public:
int x,y;
};
bool drection(cor& p0,cor& p1,cor& p2){
int flag = (p2.x-p0.x)*(p1.y-p0.y)-(p1.x-p0.x)*(p2.y-p0.y);
if(flag > 0)
return false;
return true;
}
int main()
{
int n;
while(cin >>n && n){
cor p0,p1,p2;
cor p_0,p_1;
bool flag = true;
cin >>p0.x >>p0.y >>p1.x >>p1.y;
p_0 = p0; p_1 = p1;
for(int i = 3;i <= n;i++){
cin >>p2.x >>p2.y;
if(!drection(p0,p1,p2) && flag){
flag = false;
}
p0 = p1; p1 = p2;
}
if(drection(p1,p2,p_0) && drection(p2,p_0,p_1))
cout <<"convex" <<endl;
else
cout <<"concave" <<endl;
}
return 0;
}