import java.awt.geom.*;

/** 
     Permette di calcolare un punto di una traiettoria da specificare
*/
public class Traiettoria {
	
	private Point2D.Double point=new Point2D.Double();
	
	/** 
     Calcola il punto P(t) di una traiettoria 
     
     @return traiettoria(t)
     @param t parametro traiettoria
     @param traiettoria nome traiettoria
	*/
	public Point2D.Double calcolaPunto(	double t,String traiettoria) {
	
	if (traiettoria.equals("parabola")) 
		return parabola(t);
	else if (traiettoria.equals("sinusoide"))
			return sinusoide(t);
	  	else if (traiettoria.equals("rosa"))  
	  			return rosaDeiVenti(t);
	  		 else  return point;
	}
	
	// Calcola i punti di una traiettoria parabolica 
	private Point2D.Double parabola(double t) {
		double x=t;
		double y=0.2*t*t;
		point.setLocation(x,y);
		return point;
	}
	
	// Calcola i punti una traiettoria sinusoidale 
	private Point2D.Double sinusoide(double t) {
		double x=t;
		double y=500*(1+0.5*Math.sin(0.1*t));
		point.setLocation(x,y);
		return point;
	}
	
	// Calcola i punti della rosa dei venti 
	private Point2D.Double rosaDeiVenti(double t) {
		double x=50*(1+0.7*Math.cos(2*0.2*t)*Math.cos(0.2*t));
		double y=500*(1+0.7*Math.cos(2*0.2*t)*Math.sin(0.2*t));
		point.setLocation(x,y);
		return point;
	}
	
}