概念
平面向量的叉积
double cross(Point a1,Point a2,Point b1,Point b2){ |
判断点是否在线段上
bool isOnSeg(Point p,Point A,Point B){ |
判断点是否在多边形里
int isInPolygon(Point p,Point* s,int m){ |
判断线段是否有公共点
bool isSegsIntersect(Point A,Point B,Point C,Point D){ |
凸包
凸包是平面上能包含所有给定点的凸多边形。凸包的周长最小。
Andrew 算法求凸包
将所有点按横坐标排序,首先从横坐标最小的点向右(逆时针)出发,使用一个单调栈来维护下凸壳,然后同理从右向左维护上凸壳。
int Andrew(int n,Point *p,Point *s){ |