import java.util.Scanner; /** * Created by Matt, Yubo, and Shreyas (sp?) on 3/30/15. */ public class Euclid { Scanner in = new Scanner(System.in); public static void main(String args[]){ new Euclid().go(); } public void go(){ while(true){ // Input ray info double ax = in.nextDouble(); double ay = in.nextDouble(); double bx = in.nextDouble(); double by = in.nextDouble(); double cx = in.nextDouble(); double cy = in.nextDouble(); // Input triangle info double side1x = in.nextDouble(); double side1y = in.nextDouble(); double side2x = in.nextDouble(); double side2y = in.nextDouble(); double side3x = in.nextDouble(); double side3y = in.nextDouble(); // End-of-test-cases flag if (side1x + side1y + side2x +side2y + side3x + side3y == 0.0){ break; } // Triangle side lengths double side1 = Math.sqrt(Math.pow((side2x - side1x), 2)+ Math.pow((side2y - side1y), 2)); double side2 = Math.sqrt(Math.pow((side3x - side2x), 2)+ Math.pow((side3y - side2y), 2)); double side3 = Math.sqrt(Math.pow((side1x - side3x), 2)+ Math.pow((side1y - side3y), 2)); // Area of triangle double s = (side1 + side2 + side3) / 2; double area = Math.sqrt(s * (s - side1) * (s - side2) * (s-side3)); // Length of AH double AB = Math.sqrt(Math.pow((bx - ax), 2)+ Math.pow((by - ay), 2)); double AC = Math.sqrt(Math.pow((cx - ax), 2)+ Math.pow((cy - ay), 2)); double d = area / AB; double cos_theta = ((cx-ax)*(bx-ax)+(cy-ay)*(by-ay)) / (AB * AC); double theta = Math.acos(cos_theta); double AH = d / Math.sin(theta); // Position of H and G double hx = ax + (AH / AC)*(cx - ax); double hy = ay + (AH / AC)*(cy - ay); double gx = bx + (AH / AC)*(cx - ax); double gy = by + (AH / AC)*(cy - ay); // Print desired output System.out.printf("%.3f %.3f %.3f %.3f\n", gx,gy,hx,hy); } } }