/*
Programa para construir figuras poligonales de n lados

*/

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class m0104282_02 extends Applet
{
   miCanvas mc;
   Panel pnl_1;
   
   Label lbl1 = new Label ("100から500の数字を入れてください");
   TextField tf_numero = new TextField ("200");
   Button botonDibujar = new Button ("Draw");

   int n = Integer.parseInt(tf_numero.getText());   
   Point[] p = new Point[1000];

public void init ()
{
   setBackground(Color.white);
   setLayout (new BorderLayout ());
   add ("North", pnl_1 = new Panel());
   pnl_1.setBackground(Color.pink);    
   pnl_1.add(lbl1);
   pnl_1.add(tf_numero);
   pnl_1.add(botonDibujar);

   botonDibujar.addActionListener (new java.awt.event.ActionListener ()
        {
          public void actionPerformed (ActionEvent e)
          {
            int num = Integer.parseInt(tf_numero.getText());
            do_continuar (num);
            
          }
        });
 

}   

class miCanvas extends Canvas {
  
  int tf_numero = n;
}


public void paint(Graphics g){
   int i, j;
   double radio = 200.0;
   
   
/*    Tengo que cargar el vector con los puntos calculados   */
    
   for(i=0; i<800; i++){
       double ang = 8.0*Math.PI*i/400;
       double z = i%50;
       double z1 = i%25;
       double z2 = i/25;
       if(Math.sin(ang) > 0.0){
       	if(z2%2==1){
      		p[i] = new Point((int)(2*i+z-4*z1), (int)(-50*Math.sin(ang)));
       	}else{
       		p[i] = new Point((int)(2*i+z), (int)(-50*Math.sin(ang)));
       	}
       }else{
       	if(z2%2==1){
       		p[i] = new Point((int)(2*i+z-4*z1), (int)(50*Math.sin(ang)));       
       	}else{
       		p[i] = new Point((int)(2*i+z), (int)(50*Math.sin(ang)));       
       	}	
       }
       
   } 

/*   seteo el color en azul - para las lineas y centralizacion de la figura  */

   double x = 0;
   g.setColor(Color.blue); 
   for(j=1; j<200; j++){
   	double ang = 8.0*Math.PI*j/n;
   	double x1 = Math.sin(ang);
   	x = 20*x1 - 4*j;
   	for(i=1; i<800; i++){
   		g.drawLine(p[i-1].x + (int)x, p[i-1].y + 4*j, p[i].x + (int)x, p[i].y + 4*j);
   	}
   }

    
} 

void do_continuar (int c)
{
   n = c;
   repaint ();
 
}

}
