// Wave// Version 1.0.0// By David Evans, 2008public class Wave {	private double A, y, w, p, d;	public Wave( double amplitude, double shift, double omega, double phi ) {		A = amplitude;		y = shift;		w = omega;		p = phi;	}	public Wave( double amplitude, double shift, double omega, double phi, double diff ) {		A = amplitude;		y = shift;		w = omega;		p = phi;		d = diff;	}	public void correct( ) {		// Corrects a negative amplitude and normalises phi		if( A < 0 ) {			A = -A;			p += Math.PI;		}		while( p >= Math.PI * 2 )			p -= Math.PI * 2;		while( p < 0 )			p += Math.PI * 2;	}	public double apply( double x ) {		// Applies the wave function to a given x coordinate		return y + A * Math.cos( x * w + p );	}	public double getAmplitude( )	{ return A; }	public double getShift( )		{ return y; }	public double getOmega( )		{ return w; }	public double getPhi( )			{ return p; }	public double getDiff( )		{ return d; }}