import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.lang.Math.*;
import javax.swing.*;
import javax.swing.event.*;

public class hansha extends AnimeApplet
{
    JCheckBox cbK;
    JCheckBox cbI,cbP,cbR,cbG;

    public void resetAll() {
        setKabe(0.0);
    }

    public void init() {
        super.init();
        setStepTime(0.05);

        Container cont=getContentPane();
        cont.setLayout(new BorderLayout());


        resetAll();



        JPanel p=new JPanel();
        p.setLayout( new GridLayout(2,1));
        p.add(animePanel);


        cbK=new JCheckBox("¸ÇÄêÃ¼",false);

        cbK.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent evt) {
                ChangeKoteiFlg(cbK.isSelected());
            }
        });

        cbI=new JCheckBox("Æþ¼ÍÇÈ",true);

        cbI.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent evt) {
                ChangeShowInFlg(cbI.isSelected());
            }
        });

        cbG=new JCheckBox("¹çÀ®ÇÈ",true);

        cbG.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent evt) {
                ChangeShowGoseiFlg(cbG.isSelected());
            }
        });

        cbP=new JCheckBox("Æ©²áÇÈ",true);

        cbP.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                ChangeShowPFlg(cbP.isSelected());
            }
        });
        cbR=new JCheckBox("È¿¼ÍÇÈ",true);

        cbR.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                ChangeShowRFlg(cbR.isSelected());
            }
        });

        JPanel p1=new JPanel();
        p1.setLayout(new BorderLayout());
        Panel p2=new Panel();
        p2.setLayout(new BorderLayout());
        Panel p3=new Panel();
        p3.setLayout(new BorderLayout());
        Panel p4=new Panel();
        p4.setLayout(new BorderLayout());

        Panel p5=new Panel();
        p5.add(cbK);
        p5.add(cbI);
        p5.add(cbG);
        p5.add(cbP);
        p5.add(cbR);
        p.add(p5);

        cont.add("South",p);
        cont.add("Center",canvas);

        tm.start();
        start();
    }

    boolean KoteiFlg=false;
    boolean ShowGoseiFlg=true;
    boolean ShowInFlg=true;
    boolean ShowPFlg=true;
    boolean ShowRFlg=true;
    double kabe;
    double k=4;

    public void setKabe(double a) {
        kabe=a;
        Graphics g=getGraphics();
        if( g != null ) { update(g); }
    }

    public void ChangeShowGoseiFlg(boolean a) {
        ShowGoseiFlg=a;
        Graphics g=getGraphics();
        if( g != null ) { update(g); }
    }

    public void ChangeShowInFlg(boolean a) {
        ShowInFlg=a;
        Graphics g=getGraphics();
        if( g != null ) { update(g); }
    }

    public void ChangeShowPFlg(boolean a) {
        ShowPFlg=a;
        Graphics g=getGraphics();
        if( g != null ) { update(g); }
    }

    public void ChangeShowRFlg(boolean a) {
        ShowRFlg=a;
        Graphics g=getGraphics();
        if( g != null ) { update(g); }
    }

    public void ChangeKoteiFlg(boolean a) {
        KoteiFlg=a;
        Graphics g=getGraphics();
        if( g != null ) { update(g); }
    }

    private void writeSegment(Graphics g,int i,int y, int ny) {
        if( ny> y) {
            g.fillRect(i,y,1,ny-y);
        } else {
            if( ny==y ) {
                g.fillRect(i,y,1,1);
            } else {
                g.fillRect(i,ny,1,y-ny);
            }
        }
    }

    public void writeCanvas(Graphics g) {
        int i;
        double x;
        double nx;
        double y1,y2,y3,y4,ny1,ny2,ny3,ny4;
        int w,h;

        double R,P;

        w=canvas.getWidth();
        h=canvas.getHeight();

        g.setColor(Color.white);
        g.fillRect(0,0,w,h);

        g.setColor(Color.gray);
        g.drawLine(0,h/2,w,h/2);
        g.drawLine(w/2,h,w/2,-h);



        if( KoteiFlg ) {
            R=-1.0;
        } else {
            R=1.0;
        }
        P=1.0;
            

        for( i=0 ; i<w/2 ; i++ ) {
            x= 2*i*Math.PI/w-Math.PI;
            nx=2*(i+1)*Math.PI/w-Math.PI;

            double kx=k*x;
            double knx=k*nx;

            y1=Math.sin(kx-t);
            ny1=Math.sin(knx-t);


            y2=R*Math.sin(-kx-t);
            ny2=R*Math.sin(-knx-t);


            if( ShowInFlg ) {
                g.setColor(Color.red);
                writeSegment(g,i,(int)(y1*h/5)+h/2,(int)(ny1*h/5)+h/2);
            }
            if( ShowRFlg ) {
                g.setColor(Color.blue);
                writeSegment(g,i,(int)(y2*h/5)+h/2,(int)(ny2*h/5)+h/2);
            }
            if( ShowGoseiFlg ) {
                g.setColor(Color.black);
                writeSegment(g,i,(int)((y1+y2)*h/5)+h/2,
                             (int)((ny1+ny2)*h/5)+h/2);
            }
        }
        if( ShowPFlg ) {
            for( i=w/2 ; i<w ; i++ ) {
                x= 2*i*Math.PI/w-Math.PI;
                nx=2*(i+1)*Math.PI/w-Math.PI;

                double kx=k*x;
                double knx=k*nx;

                y3=P*Math.sin(kx-t);
                ny3=P*Math.sin(knx-t);

                g.setColor(new Color(0,130,0));
                writeSegment(g,i,(int)(y3*h/5)+h/2,(int)(ny3*h/5)+h/2);
            }
        }
    }
}






//  LocalWords:  touka
