nyoj68 三点顺序
原创
©著作权归作者所有:来自51CTO博客作者scx_white的原创作品,请联系作者获取转载授权,否则将追究法律责任
首先以任意两点为一条直线,然后判断第三个点实在直线的上方还是下方。
#include <stdio.h>
int main()
{
float x1,x2,x3,y1,y2,y3,k;
while(scanf("%f %f %f %f %f %f",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
{
if(x1==0&&x2==0&&x3==0&&y1==0&&y2==0&&y3==0)
break;
if(x2<x3)//当B在C左边时
{
if((y3-y2)/(x3-x2)*(x1-x2)+y2>y1)//过B(x2,y2),C(x3,y3)的直线方程 代入A(x1,y1)判断A(x1,y1)的位置,由于x2<x3,若A在直线下方顺时针
printf("1\n");
else
printf("0\n");//A在直线上方逆时针
}
if(x2==x3)//当B和C在同一横坐标
{
if(y2>y3)//B在C上方
{
if(x1>x2)//A在B右边
printf("0\n");
else//A在B左边
printf("1\n");
}
else//和上面相反
{
if(x1>x2)
printf("1\n");
else
printf("0\n");
}
}
if(x2>x3)//懂了x2<x3这个也懂了
{
if((y3-y2)/(x3-x2)*(x1-x2)+y2>y1)
printf("0\n");
else
printf("1\n");
}
}
return 0;
}