1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| public class Main {
public static int direction(int[] pi, int[] pj, int[] pk){ return (pi[0]-pk[0])*(pi[1]-pj[1]) - (pi[0]-pj[0])*(pi[1]-pk[1]); }
public static boolean onSegment(int[] pi, int[] pj, int[] pk) { if ( Math.min(pi[0], pj[0]) <= pk[0] && pk[0] <= Math.max(pi[0], pj[0]) && Math.min(pi[1], pj[1]) <= pk[1] && pk[1] <= Math.max(pi[1], pj[1]) ) { return true; }else { return false; } } public static boolean segmentInsert(int[] p1, int[] p2, int[] p3, int[] p4) { int d1 = direction(p3, p4, p1); int d2 = direction(p3, p4, p2); int d3 = direction(p1, p2, p3); int d4 = direction(p1, p2, p4); if ( ((d1>0 && d2<0) || (d1<0 && d2>0)) && ((d3>0 && d4<0) || (d3<0 && d4>0))) { return true; } else if ( d1==0 && onSegment(p3, p4, p1)) { return true; } else if ( d2==0 && onSegment(p3, p4, p2)) { return true; } else if ( d3==0 && onSegment(p1, p2, p3)) { return true; } else if ( d4==0 && onSegment(p1, p2, p4)) { return true; } else { return false; } } public static double area(int[] p1, int[] p2, int[] p3){
return Math.abs( Main.direction(p1, p2, p3)/2.0 ); } public static void meet(int[] p1, int[] p2, int[] p3,int[] p4, int p5[],int n) { double area = Main.area(p1, p2, p3); System.out.println("Case "+n); System.out.print(area); boolean b1 = segmentInsert(p1, p2, p5, p4); boolean b2 = segmentInsert(p1, p3, p5, p4); boolean b3 = segmentInsert(p3, p2, p5, p4); if (b1 && b2 && b3) { System.out.println(" Yes"); }else{ System.out.println(" No"); } } public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = in.nextInt(); for (int i = 1; i <= n; i++) { int[] p1 = {in.nextInt(), in.nextInt()}; int[] p2 = {in.nextInt(), in.nextInt()}; int[] p3 = {in.nextInt(), in.nextInt()}; int[] p4 = {in.nextInt(), in.nextInt()}; int[] p5 = {in.nextInt(), in.nextInt()}; Main.meet(p1, p2, p3, p4, p5, i); } } } }
|