import java.awt.*;
import java.awt.geom.*;
import java.applet.*;
import javax.swing.*;


public class DisegnaTraiettoria extends Applet {
	private Rectangle2D.Double cornice;	
	private final double X01, Y01, X02, Y02, X03, Y03;// coordinate primo triangolo da disegnare
	private final double X1, Y1, X2, Y2;// coordinate finestra utente
	private final double XMIN,XMAX, YMIN, YMAX; // % coordinate viewport
	private Triangolo triangolo;
	private String traiettoria;
	
	public DisegnaTraiettoria() {
		
		//inizializzazione delle coordinate del primo triangolo da disegnare		
		X01=5; X02=15; X03=20;
		Y01=5; Y02=30; Y03=5;
		triangolo=new Triangolo();	
		
		
		//inizializzazione della finestra di utente
		X1=0; X2=100; 
		Y1=0; Y2=1000; 
		cornice = new Rectangle2D.Double(X1, Y1, X2-X1, Y2-Y1);
		
		//inizializzazione del viewport
		XMIN=0.1; YMIN=0.1; XMAX=0.9; YMAX=0.9;
		
		//scelta traiettoria con controllo dell'input
		
		//codice da implementare
		
		}

	public void paint(Graphics g) {
		Graphics2D g2 = (Graphics2D)g;
		
		// NB:Le trasformazioni di coordinate inserite nel contesto grafico
		// sono eseguite in ordine inverso rispetto alla sequenza delle chiamate dei 
		// metodi scale e translate
		
		// traslazione dell'origine delle coordinate di pixel
		// nel vertice superiore sinistro del viewport
		double W=getWidth()-1;
		double H=getHeight()-1;
		g2.translate(XMIN*W, YMIN*H);
		
		// scalamento delle coordinate di utente in coordinate di pixel
		// con ribaltamento dell'asse verticale
		double xscale = W*(XMAX-XMIN)/(X2 - X1), yscale = H*(YMAX-YMIN)/(Y1 - Y2);
		g2.scale(xscale, yscale);
		
		// traslazione del vertice superiore sinistro della finestra d'utente 
		// nell'origine delle coordinate di utente
		g2.translate(-X1, -Y2);
		
		// evita deformazioni delle linee
		g2.setStroke(new BasicStroke(0));
		
		// taglia porzioni figure fouri dalla finestra utente
		g2.setClip(cornice);
		
		// disegno dei triangoli nel viewport
		double  t=0, dt=1;
		Traiettoria trajectory=new Traiettoria();
		Point2D.Double  point=trajectory.calcolaPunto(t,"parabola");
		double  x=point.getX(), dx, new_x; 
		double  y=point.getY(), dy, new_y;
		triangolo.setCoordinates(X01,X02,X03,Y01,Y02,Y03);
		double bx=triangolo.baricentro().getX();
		double by=triangolo.baricentro().getY();
		triangolo.translate(x-bx,y-by);
			
		for (int i=0; i<=200; i++) {
			triangolo.disegna(g2);
			// completare il ciclo di disegno									
		}
		g2.draw(cornice);
				
	}
}