叉积判断两个矢量的位置关系

//一本通矢量的矢量积练习1 

//                                -→        -→        -→        -→
//题意:给定两个有公共端点的矢量p0p1 和 p0p2,判断p0p1是否在p0p2的顺时针方向 

//p1*p2=det[x1 x2]
//           [y1 y2]
//       =x1y2-x2y1
//       =-p2*p1
//如果p1*p2为正数,则相对于原点(0,0)来说,p1在p2的顺时针方向
//如果为负数,则p1在p2的逆时针方向
//如果==0,则p1和p2共线,方向相同或相反 

//以p0为原点建立坐标系,那么P1=p1-p0,P2=p2-p0,
//它们的叉积t=(p1-p0)*(p2-p0)=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

struct Point
{
    double x,y;
}p0,p1,p2;

int main()
{
    scanf("%lf%lf%lf%lf%lf%lf",&p0.x,&p0.y,&p1.x,&p1.y,&p2.x,&p2.y);
    double t=(p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
    if(t>0)
        puts("Yes");
    else
        puts("No");
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/lovewhy/p/8982744.html