计算几何(判断顺时针/逆时针) - Clockwise or Counterclockwise - HDU 6857

计算几何(判断顺时针/逆时针) - Clockwise or Counterclockwise - HDU 6857

2020 Multi-University Training Contest 8

题意:

给 定 三 个 点 的 坐 标 , A , B , C , 判 断 从 A 到 B 到 C 是 顺 时 针 还 是 逆 时 针 。 给定三个点的坐标,A,B,C,判断从A到B到C是顺时针还是逆时针。 A,B,CABC

输入:

T ( 1 ≤ T ≤ 1000 ) 组 测 试 数 据 , T(1≤T≤1 000)组测试数据, T(1T1000)

每 组 包 括 三 个 点 的 坐 标 ( 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)109xi,yi109.

输出:

若 是 顺 时 针 , 输 出 : 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 
#include 
#include 
#include 

#define P pair
#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;
}

你可能感兴趣的:(计算几何)