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

来源:互联网 发布:海康设备网络搜索软件 编辑:程序博客网 时间:2024/06/04 18:22

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

累加器传送门:

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<cstdio>#include<cmath>#include<iostream>#include<cstring>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"<<endl;    else cout<<"NO"<<endl;    return 0; }
0 0