CS 100: Lecture L25

April 27

| Back to Lecture Index |


Demo for the point, triangle, and rightTriangle classes:

import java.io.*;
import java.awt.*;

public class L25Show extends Frame
{
    public static void ShowTriangle(Graphics g,Triangle T, Color c)
    {
       double[][] V = T.getVertices();
       int[] h = new int[3];
       int[] v = new int[3];
       
       h[0] = 400 + (int)V[0][0];  v[0] = 300 - (int)V[0][1];
       h[1] = 400 + (int)V[1][0];  v[1] = 300 - (int)V[1][1];
       h[2] = 400 + (int)V[2][0];  v[2] = 300 - (int)V[2][1];
     
       g.setColor(c);
       g.drawLine(h[0],v[0],h[1],v[1]);
       g.drawLine(h[2],v[2],h[1],v[1]);
       g.drawLine(h[0],v[0],h[2],v[2]);
       g.fillPolygon(h,v,3);
       
    }
    
    
	public void paint(Graphics g)
	{
	   point p0 = new point(-120,-100);
	   point p1 = new point(-100,-50);
	   point p2 = new point(-200,0);
	   
	   Triangle T0 = new Triangle(p0,p1,p2);
	   ShowTriangle(g,T0,Color.blue);
	   
	
	   Triangle T1 = new Triangle(new point(-200,100), 100.);
	   ShowTriangle(g,T1,Color.red);
	   
	   rightTriangle T2 = new rightTriangle(new point(-200,-200),100,70);
	   ShowTriangle(g,T2,Color.green);
	   
	}
	
}

public class L25
{
	public static void main(String args[])
	{
		L25Show d = new L25Show();
		d.resize(800,600);                     
		d.move(0,75);
		d.setTitle("Drawing");                 
		d.show();
		d.toFront();
	}
}



The point class.

// An instance of this class is a point in the xy-plane.
public class point
{
   private double x;
   private double y;
   
   // The Constructors:
   
   public point(double xVal, double yVal)
   {
      x = xVal;
      y = yVal;
   }

   public point(point P)
   {
      x = P.x;
      y = P.y;
   }
   
   public point(double s)
   {
      x = -s + 2*s*Math.random();
      y = -s + 2*s*Math.random();
   }

   
   // Move the point a units in the x-direction 
   // and b units in the y-direction.
   public void translate(double a, double b)
   {
      x = x+a;
      y = y+b;
   }
   
   // Yields the x-coordinate of the point.
   public double get_x()
   {
      return x;
   }
   
   // Yields the y-coordinate of the point.
   public double get_y()
   {
      return y;
   }
   
   // Yields the distance from P0 to P1.
   public static double dist(point P0, point P1)
   {
      return Math.sqrt((P0.x-P1.x)*(P0.x-P1.x) + (P0.y-P1.y)*(P0.y-P1.y));
   }
   
 
   // Yields a string representation of the point.
   public String pointString()
   {
      return "(" + String.valueOf(x) + "," + String.valueOf(y) + ")";
   }
}

The triangle class

// An instance of this class is a triangle.
public class Triangle
{	
   protected point P0,P1,P2;    // The triangle's vertices

   // Constructor for a triangle with vertices rho0, rho1, rho2.
   public Triangle(point v0, point v1, point v2)
   {
      P0 = new point(v0);
      P1 = new point(v1);
      P2 = new point(v2);
   }
   
   // Constructor for equilateral triangle with 
   // center cent and radius r.
   public Triangle(point cent, double r)
   {
      double a = r*Math.sqrt(3)/2;
      double b = r/2;
      double xc = cent.get_x();
      double yc = cent.get_y();
      
      P0 = new point(xc-a,yc-b);
      P1 = new point(xc+a,yc-b);
      P2 = new point(xc,yc+r);
   }
   
   // Constructor for the empty triangle
   public Triangle()
   {
      P0 = new point(0,0);
      P1 = new point(0,0);
      P2 = new point(0,0);
   }
   
   
   // Yields the area of this triangle.
   public double Area()
   {
      double a = point.dist(P0,P1);
      double b = point.dist(P1,P2);
      double c = point.dist(P2,P0);
      double s = (a+b+c)/2;
      return Math.sqrt(s*(s-a)*(s-b)*(s-c));
   }
   
   // Yields a 3-by-2 array whose rows house the x and y 
   // coordinates of the triangle's vertices.
   public double[][] getVertices()
   {
      double[][] A = new double[3][2];
      A[0][0] = P0.get_x(); A[0][1] = P0.get_y();
      A[1][0] = P1.get_x(); A[1][1] = P1.get_y();
      A[2][0] = P2.get_x(); A[2][1] = P2.get_y(); 
      return A; 
   }  
}

   
 

The rightTriangle class

// An instance of this class is a right triangle.
public class rightTriangle extends Triangle
{
   // Constructor for right triangle with 90 degree 
   // angle at P0 and legs with length a and b.
   public rightTriangle(point Q, double a, double b)
   {
      double Qx = Q.get_x();
      double Qy = Q.get_y();
      P0 = new point(Qx,Qy);
      P1 = new point(Qx+a,Qy);
      P2 = new point(Qx,Qy+b);
   }
   
   // The hypotenuse of this triangle.
   public double hypot()
   {
      return point.dist(P1,P2);
   }
   
   // The area of this triangle.
   public double Area()
   {
      double side1 = point.dist(P0,P1);
      double side2 = point.dist(P0,P2);
      return side1*side2/2;
   }
}