admin管理员组文章数量:1123196
Counter
题目链接:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{double x0,y0,x1,y1;scanf("%lf%lf%lf%lf",&x0,&y0,&x1,&y1);int q;scanf("%d",&q);double x2,y2;while(q--){scanf("%lf%lf",&x2,&y2);double ans=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);if(ans>0){printf("COUNTER_CLOCKWISE\n"); ///1}else if(ans<0){printf("CLOCKWISE\n");///2}else{double ans1=(x1-x0)*(x2-x0)+(y1-y0)*(y2-y0);if(ans1<0){printf("ONLINE_BACK\n");///3}else{double l1=sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));double l2=sqrt((x2-x0)*(x2-x0)+(y2-y0)*(y2-y0));if(l1<l2){printf("ONLINE_FRONT\n");///4}else printf("ON_SEGMENT\n");///5}}}
}
向量积可以被定义为:
模长:(在这里θ表示两向量之间的夹角(共起点的前提下)(0°≤θ≤180°),它位于这两个矢量所定义的平面上。)
方向:a向量与b向量的向量积的方向与这两个向量所在平面垂直,且遵守右手定则。(一个简单的确定满足“右手定则”的结果向量的方向的方法是这样的:若坐标系是满足右手定则的,当右手的四指从a以不超过180度的转角转向b时,竖起的大拇指指向是c的方向。)
也可以这样定义(等效):
向量积|c|=|a×b|=|a||b|sin<a,b>
即c的长度在数值上等于以a,b,夹角为θ组成的平行四边形的面积。
而c的方向垂直于a与b所决定的平面,c的指向按右手定则从a转向b来确定。
*运算结果c是一个伪向量。这是因为在不同的坐标系中c可能不同。 [1]
设 p1=(x1,y1),p2=(x2,y2),p3=(x3,y3)
p12=(x2-x1, y2-y1) p23=(x3-x2, y3-y2)
则当 p12 与 p23 的叉乘(向量积)p12 x p23 = (x2-x1)(y3-y2)-(y2-y1)(x3-x2)
为正时,p1-p2-p3路径的走向为逆时针,
为负时,p1-p2-p3 走向为顺时针,
为零时,p1-p2-p3 所走的方向不变,亦即三点在一直线上。
本文标签: Counter
版权声明:本文标题:Counter 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1697048510a260980.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论