- 核心思想是如何找到多边形是凸包的规律用算法表现出来
Given a list of points that form a polygon when joined sequentially, find if this polygon is convex (Convex polygon definition).
class Solution {
public:
// if and only if >0
bool isClockWise(int a,int b,int c,int d){
return (a*d-b*c)>0;
}
bool isConvex(vector<vector<int>>& points) {
bool isclock = isClockWise(points[1][0]-points[0][0],points[1][1]-points[0][1],points[2][0]-points[0][0],points[2][1]-points[0][1]);
int n=points.size();
for(int i=1;i<points.size();++i){
int p1=(i+n)%n;
int p2=(i+n+1)%n;
bool tmp=isClockWise(points[p1][0]-points[i][0],points[p1][1]-points[i][1],points[p2][0]-points[i][0],points[p2][1]-points[i][1]);
if(tmp!=isclock)return false;
}
return true;
}
};