import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;

public class Exponential extends java.applet.Applet implements Runnable {

     private Thread flow;
     private Font Myfont;
     private String[] Fonts;
     private double lambda1,lambda2;
     private int iterations;
     private int r[];
     private int green[];
     private int b[];
     private Color colors[];
     private int infinity;

     public void init() {

        resize(400,400);

        lambda1 = Double.valueOf(getParameter("lambda1")).doubleValue();
        lambda2 = Double.valueOf(getParameter("lambda2")).doubleValue();
        iterations = Integer.valueOf(getParameter("iterations")).intValue();
        infinity = Integer.valueOf(getParameter("infinity")).intValue();

        r = new int[30];
        green = new int[30];
        b = new int[30];
        colors = new Color[30];

        r[1] = Integer.valueOf(getParameter("r1")).intValue();
        green[1] = Integer.valueOf(getParameter("g1")).intValue();
        b[1] = Integer.valueOf(getParameter("b1")).intValue();

        r[2] = Integer.valueOf(getParameter("r2")).intValue();
        green[2] = Integer.valueOf(getParameter("g2")).intValue();
        b[2] = Integer.valueOf(getParameter("b2")).intValue();

        r[3] = Integer.valueOf(getParameter("r3")).intValue();
        green[3] = Integer.valueOf(getParameter("g3")).intValue();
        b[3] = Integer.valueOf(getParameter("b3")).intValue();

        r[4] = Integer.valueOf(getParameter("r4")).intValue();
        green[4] = Integer.valueOf(getParameter("g4")).intValue();
        b[4] = Integer.valueOf(getParameter("b4")).intValue();

        r[5] = Integer.valueOf(getParameter("r5")).intValue();
        green[5] = Integer.valueOf(getParameter("g5")).intValue();
        b[5] = Integer.valueOf(getParameter("b5")).intValue();

        r[6] = Integer.valueOf(getParameter("r6")).intValue();
        green[6] = Integer.valueOf(getParameter("g6")).intValue();
        b[6] = Integer.valueOf(getParameter("b6")).intValue();

        r[7] = Integer.valueOf(getParameter("r7")).intValue();
        green[7] = Integer.valueOf(getParameter("g7")).intValue();
        b[7] = Integer.valueOf(getParameter("b7")).intValue();

        r[8] = Integer.valueOf(getParameter("r8")).intValue();
        green[8] = Integer.valueOf(getParameter("g8")).intValue();
        b[8] = Integer.valueOf(getParameter("b8")).intValue();

        r[9] = Integer.valueOf(getParameter("r9")).intValue();
        green[9] = Integer.valueOf(getParameter("g9")).intValue();
        b[9] = Integer.valueOf(getParameter("b9")).intValue();

        r[10] = Integer.valueOf(getParameter("r10")).intValue();
        green[10] = Integer.valueOf(getParameter("g10")).intValue();
        b[10] = Integer.valueOf(getParameter("b10")).intValue();

        r[11] = Integer.valueOf(getParameter("r11")).intValue();
        green[11] = Integer.valueOf(getParameter("g11")).intValue();
        b[11] = Integer.valueOf(getParameter("b11")).intValue();

        r[12] = Integer.valueOf(getParameter("r12")).intValue();
        green[12] = Integer.valueOf(getParameter("g12")).intValue();
        b[12] = Integer.valueOf(getParameter("b12")).intValue();

        r[13] = Integer.valueOf(getParameter("r13")).intValue();
        green[13] = Integer.valueOf(getParameter("g13")).intValue();
        b[13] = Integer.valueOf(getParameter("b13")).intValue();

        r[14] = Integer.valueOf(getParameter("r14")).intValue();
        green[14] = Integer.valueOf(getParameter("g14")).intValue();
        b[14] = Integer.valueOf(getParameter("b14")).intValue();

        r[15] = Integer.valueOf(getParameter("r15")).intValue();
        green[15] = Integer.valueOf(getParameter("g15")).intValue();
        b[15] = Integer.valueOf(getParameter("b15")).intValue();

        r[20] = Integer.valueOf(getParameter("rm")).intValue();
        green[20] = Integer.valueOf(getParameter("gm")).intValue();
        b[20] = Integer.valueOf(getParameter("bm")).intValue();

        r[0] = Integer.valueOf(getParameter("rb")).intValue();
        green[0] = Integer.valueOf(getParameter("gb")).intValue();
        b[0] = Integer.valueOf(getParameter("bb")).intValue();

        for (int i=0;i<=15;i++) {
           colors[i] = new Color(r[i],green[i],b[i]);
        }

        colors[0] = new Color(r[0],green[0],b[0]);


     }

     public void update(Graphics g) {

        paint(g);

     }

     public void putpixel(int x,int y,Color c,Graphics g) {

        g.setColor(c);
        g.fillRect(x,y,1,1);

     }

     public void paint(Graphics g) {

        double x0,y0,q,f,x1,y1,z;
        int white;
        int map[][];

        map = new int[401][401];

        for (int i=1;i<=400;i++) {
           for (int j=1;j<=400;j++) {
              map[i][j]=0;
           }
        }

        for (int m=0;m<=400;m++) {
           for (int n=0;n<=400;n++) {
              x0 = -1 + (m*1.0)/(200*1.0);
              y0 = 1 - (n*1.0)/(200*1.0);
              q = x0;
              f = y0;
              white = 0;
              for (int i=1;i<=iterations;i++) {
                 x1 = lambda1*Math.exp(q)*Math.cos(f)-lambda2*Math.exp(q)*Math.sin(f);
                 y1 = lambda2*Math.exp(q)*Math.cos(f)+lambda1*Math.exp(q)*Math.sin(f);
                 q  = x1;
                 f  = y1;
                 z = Math.abs(q);
                 if (z>infinity) {
                    if (i<=15) {
                       map[n][m]=i;
                    } else {
                       map[n][m]=20;
                    }
                    white = 1;
                    i = iterations + 1;
                 }
              }
           }
        }

        for (int i=1;i<=400;i++) {
           for (int j=1;j<=400;j++) {
              putpixel(j,i,colors[map[i][j]],g);
           }
           System.out.println();
        }

     }

     public void run() {
        repaint();
     }

     public void start() {
        flow = new Thread(this);
        flow.start();
     }

     public void stop() {
        flow.stop();
     }

     public static void main(String args[]) {
        System.out.println("Hello");
     }
     
}
