题意:
给 定 三 个 点 的 坐 标 , A , B , C , 判 断 从 A 到 B 到 C 是 顺 时 针 还 是 逆 时 针 。 给定三个点的坐标,A,B,C,判断从A到B到C是顺时针还是逆时针。 给定三个点的坐标,A,B,C,判断从A到B到C是顺时针还是逆时针。
输入:
T ( 1 ≤ T ≤ 1000 ) 组 测 试 数 据 , T(1≤T≤1 000)组测试数据, T(1≤T≤1000)组测试数据,
每 组 包 括 三 个 点 的 坐 标 ( x i , y i ) 。 − 1 0 9 ≤ x i , y i ≤ 1 0 9 . 每组包括三个点的坐标(x_i,y_i)。−10^9≤x_i,y_i≤10^9. 每组包括三个点的坐标(xi,yi)。−109≤xi,yi≤109.
输出:
若 是 顺 时 针 , 输 出 : C l o c k w i s e 若是顺时针,输出:Clockwise 若是顺时针,输出:Clockwise
若 是 逆 时 针 , 输 出 : C o u n t e r c l o c k w i s e 若是逆时针,输出:Counterclockwise 若是逆时针,输出:Counterclockwise
Sample Input
3
1 2 2 1 -1 -2
4 3 -4 3 3 4
4 -3 4 3 3 4
Sample Output
Clockwise
Clockwise
Counterclockwise
分析:
右 手 定 则 右手定则 右手定则
α → × β → 若 β 在 α 的 逆 时 针 方 向 , 则 为 正 值 \overrightarrow{α}×\overrightarrow{β} \\ \ \\若β在α的逆时针方向,则为正值 α×β 若β在α的逆时针方向,则为正值
顺 时 针 则 为 负 值 顺时针则为负值 顺时针则为负值
两 向 量 共 线 则 为 0 两向量共线则为0 两向量共线则为0
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define P pair<double,double>
#define x first
#define y second
using namespace std;
int T;
P V[5];
P s[5];
double Cross(P a,P b)
{
return a.x*b.y-a.y*b.x;
}
int main()
{
cin>>T;
while(T--)
{
for(int i=0;i<3;i++) scanf("%lf%lf",&V[i].x,&V[i].y);
for(int i=0;i<2;i++) s[i]={V[i+1].x-V[i].x,V[i+1].y-V[i].y};
bool z=true;
if(Cross(s[0],s[1])>0) z=false;
if(z) puts("Clockwise");
else puts("Counterclockwise");
}
return 0;
}