import java.awt.Point;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;


/** 
    Permette di creare un oggetto triangolo definito dalle coordinate di tre vertici. 
*/
public class Triangolo {
	/** 
	    Costruisce un triangolo con le seguenti coordinate dei vertici: v1=(X1,Y1),	v2=(X2,Y2), v3=(X3,Y3). Se il triangolo  degenere stampa un opportuno messaggio
	*/
	public Triangolo() throws IOException {
		
		v1=new Point();
		v2=new Point();
		v3=new Point();
		
		Triangolo.leggiCoordinate(v1,"primo");
		Triangolo.leggiCoordinate(v2,"secondo");
		Triangolo.leggiCoordinate(v3,"terzo");
		
			
		double	determinante=(v1.getX()-v3.getX())*(v2.getY()-v1.getY())-(v2.getX()-v1.getX())*(v1.getY()-v3.getY());
	
		if  (determinante==0.0)
			System.out.println("Il triangolo e'degenere.\n");
			
		a=Triangolo.distanza(v1,v2);
	    b=Triangolo.distanza(v1,v3);
	    c=Triangolo.distanza(v3,v2);
	
	}
	
	/** 
	   Restituisce il perimetro del triangolo
	*/
	public double perimetro(){
		
		return a+b+c;				
		
	}
	
	/** 
	   Restituisce l'area del triangolo
	*/
	public double area (){
		
		double s=this.perimetro()/2;
		
		return Math.sqrt(s*(s-a)*(s-b)*(s-c));
		
	}
	
	/** 
	   Restituisce le coordinate (X,Y) del baricentro del triangolo
	*/
	public Point baricentro(){
		
		Point baricentro=new Point((int)(v1.getX()+v2.getX()+v2.getX())/3,(int)(v1.getY()+v2.getY()+v3.getY())/3);
		
		return baricentro;
		
	}
	
	private static double distanza(Point P1, Point P2){
		
		return Math.sqrt(Math.pow(P1.getX()-P2.getX(),2)+Math.pow(P1.getY()-P2.getY(),2));
		
	}
	
	private static void leggiCoordinate(Point p, String vertice) throws IOException {
		
		String 	input;
		BufferedReader console= new BufferedReader(new InputStreamReader(System.in));
		int ascissa,ordinata;
		
		System.out.print("Inserire l'ascissa del "+vertice+" vertice:");
		input= console.readLine();
		ascissa=Integer.parseInt(input);
		System.out.print("Inserire l'ordinata del "+vertice+" vertice:");
		input= console.readLine();
		ordinata=Integer.parseInt(input);
		
		p.setLocation(ascissa,ordinata);
	
	}
	
	private Point v1, v2, v3;    			  // i vertici del triangolo
	private double a, b, c; 	 			  // le lunghezze dei lati del triangolo
	
}