计算几何 如何判断两个向量的位置关系

用叉积来判断两个向量的位置关系

累加器传送门:

http://blog.csdn.net/noiau/article/details/71775000

显然,如果向量A×B的值为正数,那么对于坐标原点来说,AB的顺时针方向,A×B的值为负数,那么对于坐标原点来说,A在B的逆时针方向,如果不懂叉乘的含义,可以参照这篇博客:
http://blog.csdn.net/NOIAu/article/details/71773603
所以给出两个向量的起始坐标和他们分别的末坐标,可以直接用叉乘判断位置关系,如果顺时针就输出Yes,逆时针输出No

代码应该可以看懂

#include
#include
#include
#include

using namespace std;

struct Point{
    double x,y;
}Pa,A,B;

typedef Point P;

P operator - (P a,P b){
    P pp;
    pp.x=a.x-b.x;
    pp.y=a.y-b.y;
    return pp;
}

double operator * (P a,P b){
    return a.x*b.y-a.y*b.x; 
}

int main(){
    scanf("%lf%lf%lf%lf%lf%lf",&Pa.x,&Pa.y,&A.x,&A.y,&B.x,&B.y);
    double judge=(A-Pa)*(B-Pa);
    if(judge>0) cout<<"YES"<else cout<<"NO"<return 0; 
}

你可能感兴趣的:(计算几何)