三点顺序_nyoj_68(计算几何).java
- 描述
- 
现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的? 如: 图1:顺时针给出 图2:逆时针给出 ![]() ![]() 
 <图1> <图2> - 输入
- 
     每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示A,B,C三个点的横纵坐标。(坐标值都在0到10000之间)
     
 输入0 0 0 0 0 0表示输入结束
 测试数据不超过10000组
- 输出
- 如果这三个点是顺时针给出的,请输出1,逆时针给出则输出0
- 样例输入
- 
0 0 1 1 1 3 0 1 1 0 0 0 0 0 0 0 0 0 
- 样例输出
- 
0 1 
- 来源
- 计算几何基础
 
import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		while(true){
			Point f[]=new Point[3];
			boolean ok=true;
			for(int i=0;i<3;i++){
				int a=input.nextInt();
				int b=input.nextInt();
				if(a!=0||b!=0)
					ok=false;
				f[i]=new Point(a,b);
			}
			if(ok)
				break;
			Point a1=new Point(f[1].x-f[0].x,f[1].y-f[0].y);//向量AB
			Point b1=new Point(f[2].x-f[1].x,f[2].y-f[1].y);//向量BC
			int ans=a1.x*b1.y-b1.x*a1.y;//向量的叉乘
			if(ans<0)
				System.out.println(1);
			else
				System.out.println(0);
		}
	}
}
class Point{
	int x,y;
	Point(int x,int y){
		this.x=x;
		this.y=y;
	}
}
 
 
 
                    
                

 
                
            
         
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号