// 18/05/2003
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/* <APPLET CODE="solfunction.class" CODEBASE="." WIDTH=470 HEIGHT=400> </APPLET> */

public class solfunction extends Applet implements AdjustmentListener
{ Label     titulo01, rotulo1a, rotulo1b, rotulo1c, rotulo02, rotulo03;
  TextField caixa001, caixa111, caix012, caixa002, caixa003;
  Scrollbar sb1, sb2;
  Number nf;
  double    hora, mes, A, Y;

  public void init()
  { titulo01  = new Label("Oscilação da luz solar");	add(titulo01);

    rotulo1a  = new Label("Mes");      add(rotulo1a);
	sb1 = new Scrollbar(Scrollbar.HORIZONTAL,0,1,1,13); add(sb1); sb1.addAdjustmentListener(this);
	caixa001 = new TextField(String.valueOf(sb1.getValue()),2); add(caixa001); 	caixa001.setEditable(false);
    rotulo1c  = new Label("Estação:");     add(rotulo1c);
    caixa111  = new TextField("",6);     add(caixa111);  caixa111.setBackground(Color.orange);

	rotulo02  = new Label("        Hora:");      add(rotulo02);
	sb2 = new Scrollbar(Scrollbar.HORIZONTAL,8,0,0,25); add(sb2); sb2.addAdjustmentListener(this);
	caixa002 = new TextField(String.valueOf(sb2.getValue()),2); add(caixa002);	caixa002.setEditable(false);

	rotulo03  = new Label("Radiação:");  add(rotulo03);
	caixa003  = new TextField("",3);     add(caixa003);  caixa003.setBackground(Color.yellow);
	caixa003.setEditable(false);
  }

  public void adjustmentValueChanged(AdjustmentEvent e)
  {
    if(e.getAdjustable() == sb1)
    {	 mes=(double)sb1.getValue();
         A= 3.0 + 1.5* Math.sin((mes+3)*(2*Math.PI/12));
         hora=(double)sb2.getValue();
		 Y=A*Math.sin((hora-6)*(2*3.1416/24));
	     if (Y<0.00001) Y=0;
	     caixa001.setText(String.valueOf((int)mes));
		 caixa003.setText(String.valueOf(Y));
		 repaint();
     }
    if(e.getAdjustable() == sb2)
    {	 hora=(double)sb2.getValue();
         mes=(double)sb1.getValue();
         A= 3.0 + 1.5*Math.sin((mes+3)*(2*Math.PI/12));
		 Y=A*Math.sin((hora-6)*(2*3.1416/24));
	     if (Y<0.00001) Y=0;
	     caixa001.setText(String.valueOf((int)mes));
		 caixa002.setText(String.valueOf(hora));
		 caixa003.setText(String.valueOf(Y));
		 repaint();
     }
   }

  public void paint (Graphics g)
  { double  T, DT, Y0, T0;
    T=0;    DT=0.2;

    Y0=30; T0=15; /* fatores de escala */
    g.drawRect(83,120,360,200);
    g.drawString("Radiação ", 5, 175);
	g.drawString("Tempo (horas)", 270, 335);

    if(     mes==12 || mes==1|| mes==2)  {g.setColor(Color.red);     caixa111.setText("Verão   ");}
	else if(mes==3 || mes==4 || mes==5 ) {g.setColor(Color.magenta); caixa111.setText("Outono");}
	else if(mes==6 || mes==7 || mes==8 ) {g.setColor(Color.blue);    caixa111.setText("Inverno");}
	else if(mes==9 || mes==10|| mes==11) {g.setColor(Color.green);   caixa111.setText("Primavera");}

    g.drawLine(83, (int)(320-Y*Y0),440,(int)(320-Y*Y0));

	for (T=0.3;T<(24);T=T+DT)
    {
		g.drawOval((int)(80+T*T0),(int)(320-Y*Y0),1,1);
		g.drawLine((int)((hora+5.6)*T0),120,(int)((hora+5.6)*T0),320);
		Y=A*Math.sin((T-6)*(2*3.1416/24));
        if (Y<0) Y=0;
    }
  }
}// Enrique Ortega DEA-FEA-Unicamp 25 abril 2002
