// COMP102 // // Example 1: // Triangle Class. // // Paul E. Dunne Monday 13th September 1999 // import java.io.*; import COMP101_TriangEX; class Triangle { // // Fields // // L : Longest side length. // M : Median side length. // S : Shortest side length. // x[2], y[2], z[2]: Co-ordinates of triangle vertices; // TypeOf: Scalene, Isoceles, Equilateral, Not a triangle; // // N.B. Floating point , so avoid testing Right-angle // since numeric comparison may be inaccurate. // // protected double L=0; // Default protected double M=0; // Default protected double S=0; // Default protected double[] x_corner = {0,0}; // Default protected double[] y_corner = {0,0}; // Default protected double[] z_corner = {0,0}; // Default protected String TypeOf; // // Constructors // // 1. Default Constructor: // public Triangle() { TypeOf = new String("Not a Triangle"); } // // 2. Given 3 side lengths; // Determine type and possible corner co-ordinates // assuming x_corner = {0,0}; y_corner={0,L}; // public Triangle ( double s1, double s2, double s3 ) { L= COMP101_TriangEX.Largest(s1,s2,s3); M= COMP101_TriangEX.Median(s1,s2,s3); S= COMP101_TriangEX.Smallest(s1,s2,s3); TypeOf = new String (COMP101_TriangEX.WhatIsIt(S,M,L)); if ( !TypeOf.equals("Not a Triangle") ) { // Fix Consistent Set of Co-ordinates; y_corner[1] = L; z_corner[1] = (M*M-S*S-L*L)/(2*L); z_corner[0] = Math.sqrt( M*M - z_corner[1]*z_corner[1] ); }; } // // 3. Given 3 points in the plane: x, y, z // Construct a triangle with side-lengths dist(x,y); dist(x,z); dist(y,z) // and determine its type. public Triangle ( double[] x, double[] y, double[] z ) { double t1; double t2; double t3; x_corner[0] = x[0]; x_corner[1] = x[1]; y_corner[0] = y[0]; y_corner[1] = y[1]; z_corner[0] = z[0]; z_corner[1] = z[1]; t1 = Math.sqrt ( (x[0]-y[0])*(x[0]-y[0]) + (x[1]-y[1])*(x[1]-y[1]) ); t2 = Math.sqrt ( (x[0]-z[0])*(x[0]-z[0]) + (x[1]-z[1])*(x[1]-z[1]) ); t3 = Math.sqrt ( (y[0]-z[0])*(y[0]-z[0]) + (y[1]-z[1])*(y[1]-z[1]) ); L= COMP101_TriangEX.Largest(t1,t2,t3); M= COMP101_TriangEX.Median(t1,t2,t3); S= COMP101_TriangEX.Smallest(t1,t2,t3); TypeOf = new String (COMP101_TriangEX.WhatIsIt(S,M,L)); } // // Methods // public static void PrintTriangle ( Triangle T ) { System.out.println ( "Smallest side : "+ T.S ); System.out.println ( "Median side : "+ T.M ); System.out.println ( "Largest side : "+ T.L ); System.out.println ("Position : "+ "(" + T.x_corner[0] + " " + T.x_corner[1] + ")" + "(" + T.y_corner[0] + " " + T.y_corner[1] + ")" + "(" + T.z_corner[0] + " " + T.z_corner[1] + ")" ); System.out.println("Type Of: "+T.TypeOf); } public boolean WellFormed() { return !TypeOf.equals("Not a Triangle"); } public char FormCode() { return TypeOf.charAt(0); } public int[] Sides() { int[] res = { (int)S,(int)M,(int)L }; return res; } }