import java.io.*;
import java.util.*;

public class Line {
	public static void main(String [] args) throws Exception {
		Scanner scanner = new Scanner(new File("lines.data"));

		while (scanner.hasNextInt()) {
			int 
				x1 = scanner.nextInt(),
				y1 = scanner.nextInt(),
				x2 = scanner.nextInt(),
				y2 = scanner.nextInt();
			doIt(x1, y1, x2, y2);
		}
		
		Random r = new Random(12345);

		System.out.println();
		System.out.println(" --- Some random points between 0 and 9");
		System.out.println();

		for (int i = 1; i <= 20; i++) {
			int 
				x1 = r.nextInt(19)-9,
				y1 = r.nextInt(19)-9,
				x2 = r.nextInt(19)-9,
				y2 = r.nextInt(19)-9;
			doIt(x1, y1, x2, y2);
		}
	}

	public static void doIt(int x1, int y1, int x2, int y2) throws Exception {
		System.out.println("(" + x1 + ", " + y1 + ") - (" + x2 + ", " + y2 + ")");

		printQuadrantInfo(x1, y1);
		printQuadrantInfo(x2, y2);

		System.out.println("The length of the line is: " + length(x1, y1, x2, y2));
		if (isVertical(x1, y1, x2, y2))
			System.out.println("Vertical line, no slope");
		else
			System.out.println("The slope of the line is: " + slope(x1, y1, x2, y2));
		System.out.println();
	}

	public static void printQuadrantInfo(int x, int y) {
		System.out.println("(" + x + ", " + y + ") Quadrant: " + quadrantStr(x, y) + " (" + quadrant(x, y) + ")");
	}

	public static String quadrantStr(int x, int y) {
		switch (quadrant(x, y)) {
			case 0: return "Origin";
			case 1: return "Quadrant 1"; 
			case 2: return "Quadrant 2";
			case 3: return "Quadrant 3"; 
			case 4: return "Quadrant 4"; 
			case 5: return "Positive x axis"; 
			case 6: return "Positive y axis"; 
			case 7: return "Negative x axis"; 
			case 8: return "Negative y axis"; 
			default: return "???";
		}
	}
			
	public static int quadrant(int x, int y) {
		if (x == 0 && y == 0) return 0;
		if (x > 0 && y > 0) return 1;
		if (x < 0 && y > 0) return 2;
		if (x < 0 && y < 0) return 3;
		if (x > 0 && y < 0) return 4;
		if (x > 0 && y == 0) return 5;
		if (x == 0 && y > 0) return 6;
		if (x < 0 && y == 0) return 7;
		if (x == 0 && y < 0) return 8;
		return -1;
	}


	public static double length(int x1, int y1, int x2, int y2) {return Math.sqrt((Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)));}
	public static boolean isVertical(int x1, int y1, int x2, int y2) {return x1 == x2;}
	public static double slope(int x1, int y1, int x2, int y2) {return (y2 - y1) / (double)(x2 - x1);}
}
