import java.applet.Applet;
import java.awt.*;
import java.lang.Math.*;

public class sine extends Applet implements Runnable {
    Thread th=null;
    float y0[] =new float[50];
    float y1[] =new float[50];
    float y[] = new float[50];
    int t = 0;

    public void init(){
    /*    
	for(i=0;i<7;i++){
	    y0[i]=10.f*(float)Math.sin(PI*i/6.);
	}
        for(i=7;i<50;i++){
	    y0[i]=0.f;
	}
	y1[0]=y0[0];y1[49]=y0[49];
	for(i=1;i<49;i++){
	    y1[i]=(y0[i+1]+y0[i-1])/2.f;
	}
    */
	
    }

    public void start(){
	if (th==null){
	    th=new Thread(this);
	    th.start();
	}
    }

    public void run(){
        int i,j,m,mflip;double PI=3.1416;
	while(true){
	    
	    /*	    if (x<=0 || x>=380)ax=-ax;//img1.gif xsize 120
	    if (y<=0 || y>=360)ay=-ay;//ysize 40
	    x=x+ax;
	    y=y+ay;*/
	    for(i=1;i<49;i++){
	    m=0;
	    mflip=-1;
	    y1[i]=0.f;
		for(j=1;j<11;j=j+2){
		    m=m+1;
		    mflip=-1*mflip;
		    
		    y1[i]=y1[i]+10.f*(float)mflip*(float)Math.sin(PI*i*j/49.)*(float)Math.cos(2*PI*j*t/100.)/(float)(j*j);
		}
	    }
	    t=t+1;
	    repaint();
	    /*	    for(i=1;i<49;i++){
	        y[i]=y1[i+1]+y1[i-1]-y0[i];
	    }
	    for(i=1;i<49;i++){
	        y0[i]=y1[i];y1[i]=y[i];
		}*/

	    try {
		th.sleep(100);
	    }
	    catch (InterruptedException e){}
	}
    }

    public void paint(Graphics g){
	int i,ix,iy,ix0,iy0;
	g.drawRect(0,0,500,400);
	    for(i=1;i<50;i++){
		ix0=(i-1)*10;iy0=200-(int)(y1[i-1]*10.f);
		ix=i*10;iy=200-(int)(y1[i]*10.f);
	        g.drawLine(ix0,iy0,ix,iy);
	    }
	/*	g.drawImage(img,x,y,this);*/
    }
    public void stop(){
	if (th!=null){
	    th.stop();
	    th=null;
	}
    }
}
