https://blog.csdn.net/sixdaycoder/article/details/79791389
在讲这个办法之前,我们先看另一个问题。
如果给定一条线段AB和点C,能否判断出来C和AB的位置关系呢?
这里的位置关系是指C是在向量AB上,还是在AB的顺时针方向,又或者是在AB的逆时针呢?
这里的C就是我们说的在AB的逆时针方向。
那么我们如何判断C和AB的位置关系呢?
先给出代码,然后给予解释:
//i输入 : 向量A->B,点p
//return true : A,B,p构成顺时针
struct Point{
double x,y;
};
Point P[N], test;
// 沿A,B,p三个点是不是顺时针
bool Is_clockwise(Point A, Point B, Point p){
return (B.x-A.x)*(p.y-A.y) - (B.y-A.y)*(p.x-A.x) < 0;
}
判断 p 是否在A-B的顺时针方向,做AB向量(A指向B,下同),Ap向量,两个向量叉乘,如果结果 < 0,说明是顺时针。否则有两种情况:p在AB上或在其逆时针方向。
向量叉乘:
向量a 和b 叉乘, 得到一个垂直于a 和b 的向量a ×b , 它的