NYOJ 三点顺序

来源:互联网 发布:淘宝网爱奇艺会员 编辑:程序博客网 时间:2024/04/29 17:18

计算几何基础题,利用向量叉积判断是顺时针还是逆时针

三个点分别为A(x1,y1),B(x2,y2),C(x3,y3)

则AB=((x2-x1),(y2-y1))

    AC=((x3-x1),(y3-y1))

ABXAC即利用行列式计算

设f=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)

则当f>0时ABC逆时针排列

反之f<=0时ABC顺时针排列

代码如下:

#include <stdio.h>#include <stdlib.h>int main(){    int x1,y1,x2,y2,x3,y3;    while(scanf("%d%d%d%d%d%d", &x1,&y1,&x2,&y2,&x3,&y3)){        if(x1==0 &&x2==0 &&x3==0 &&y1==0 &&y2==0 &&y3==0)            break;        int f;        f=(x2-x1)*(y3-y1) -(y2-y1)*(x3-x1);        if(f>0)            printf("0\n");        else        printf("1\n");    }}