//一本通矢量的矢量积练习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; }