import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class m0104345 extends Applet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	miCanvas mc;

	Panel pnl_1;

	Label lbl1 = new Label("分割数");
	Label lbl2 = new Label("年輪の多さ");
	Label lbl3 = new Label("渦潮の大きさ");
	Label lbl4 = new Label("変化値");


	TextField tf_numero = new TextField("360");//一つ目の分割数
	TextField tf_numero2 = new TextField("10");//一つ目の年輪の数
	TextField tf_numero3 = new TextField("50");//一つ目のの大きさ
	TextField tf_numero4 = new TextField("0");//一つ目の変化値

	// Drawボタン
	Button botonDibujar = new Button("Draw");

	// 書かれた値を読み取る
	// ここではnを分割数にしている。
	int n = Integer.parseInt(tf_numero.getText());
	int hana = Integer.parseInt(tf_numero2.getText());
	int size = Integer.parseInt(tf_numero3.getText());
	double henka = Double.parseDouble(tf_numero4.getText());
	

	//座標記憶用の配列を用意
	Point[] p = new Point[n + 1];
	

	public void init() {
		setBackground(Color.white);
		setLayout(new BorderLayout());
		add("North", pnl_1 = new Panel());
		pnl_1.setLayout(new GridLayout(1, 5));

		pnl_1.setBackground(Color.pink);

		pnl_1.add(lbl1);		
		pnl_1.add(tf_numero);
		pnl_1.add(lbl2);
		pnl_1.add(tf_numero2);
		pnl_1.add(lbl3);
		pnl_1.add(tf_numero3);
		pnl_1.add(lbl4);
		pnl_1.add(tf_numero4);
		
		pnl_1.add(botonDibujar);

		botonDibujar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {

				int num = Integer.parseInt(tf_numero.getText());
				int hananum = Integer.parseInt(tf_numero2.getText());
				int size = Integer.parseInt(tf_numero3.getText());
				double henka = Double.parseDouble(tf_numero4.getText());
				

				do_continuar(num, hananum, size, henka);
			}
		});
	}

	class miCanvas extends Canvas {

		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		int tf_numero = n;
		int tf_numero2 = hana;
		int tf_numero3 = size;
		double tf_numero4 = henka;
		
	}

	public void paint(Graphics g) {
		int i;
		int radio = size;
		

		for (i = 0; i < n + 1; i++) {
			double ang = 1.5 * Math.PI * i / (n);//分割数nで割る
			p[i] = new Point(
					(int) (radio * (henka + Math.sin(ang)) * Math.cos(hana * ang)),
					(int) (radio * (henka + Math.sin(ang)) * Math.sin(hana * ang)));
		}
		
		int x, y;
		for(x=100;x<800;x+=100){
			for(y=100;y<800;y+=100){
				for (i = 1; i < n + 1; i++) {					
					if (i < n / 6) {
						g.setColor(Color.pink);
					} else if (i >= n / 6 && i < (n * 2) / 6) {
						g.setColor(Color.yellow);
					} else if (i >= (n * 2) / 6 && i < (n * 3) / 6) {
						g.setColor(Color.green);
					} else if (i >= (n * 3) / 6 && i < (n * 4) / 6) {
						g.setColor(Color.orange);
					} else if (i >= (n * 4) / 6 && i < (n * 5) / 6) {
						g.setColor(Color.red);
					} else if (i >= (n * 5) / 6) {
						g.setColor(Color.yellow);
					}
					g.drawLine(p[i - 1].x + x, p[i - 1].y+y , p[i].x +x, p[i].y+y);
					
				}
			}
		}
	}

	void do_continuar(int c, int d, int e, double f) {

		n = c;
		hana = d;
		size = e;
		henka = f;
		repaint();

	}

}
