import jp.ac.teu.media.*;

public class m0103400_2 extends TMLib {
    final static int vsize = 480;

    public static void main(String [] args) {
        begin(new m0103400_2(), vsize, vsize);
    }

    public double getLength(int x, int y, int ox, int oy){
        return Math.sqrt((double)((x - ox) * (x - ox) + (y - oy) * (y - oy)));
    }

    public void Main() {
        int x, y, R, G, B;
        double a, X, sX, wX, dX, Y, sY, wY, dY, Z1, Z2;
        TMLibImage    img = new TMLibImage();
        img.newImage(vsize, vsize);

        // *** BEGIN WINDOW *** //

        sX = -150.0;
        sY = -150.0;
        wX = 150.0;
        wY = wX;

        // *** END WINDOW *** //

        dX = wX/(double)vsize;
        dY = wY/(double)vsize;

        for(x = 0; x < vsize; x++){
            X = sX + dX * (double)x;

            for(y = 0; y < vsize; y++){
                Y = sY + dY * (double)y;

                // *** BEGIN YOUR PROGRAM *** //

				a = getLength(x,y,0,0);

				if ( a < 30 ){
					R = 230;
					G = 230;
					B = 0;
				} else if(((int)(getLength(x, y, 0, 0) / 20.0) % 2 == 0
						|| ((x + y + (int)(18.0 * Math.sin((double)(y - (x + 480)) * Math.PI / 30.0)) + 8) / 16) % 3 == 0)){
					Z1 = X * X + Y * Y;
					R = (int)Z1 % 48;
					G = (int)Z1 % 200-y/4;
					B = 0;
				} else if((int)(getLength(x, y, 0,0) / 40.0) % 4 == 0){
					Z1 = X * X + Y * Y;
										R = (int)Z1 % 300 - x/4;
										G = (int)Z1 % 300 - y/4;
					B = 0;

				} else if((int)(getLength(x, y, 0,0) / 40.0) % 3 == 0){
					Z1 = X * X + Y * Y;
					R = (int)Z1 % 256 - x/2;
					G = (int)Z1 % 256 - y;
					B = (int)Z1 % 255;
				} else if((int)(getLength(x, y, 0,0) / 40.0) % 2 == 0){
					Z1 = X * X + Y * Y;
					R = (int)Z1 % 200 - x/4;
					G = (int)Z1 % 200 - y/4;
					B = (int)Z1 % 200;
				}else{
					R = 480 - x/4 - y/4;
					G = 200 - x/4 - y/4;
					B = 300 - x/4 - y/4;
				}

                // *** END YOUR PROGRAM *** //

                img.setRGB(x, y, R, G, B);
            }
        }

        drawImage(0, 0, img);
        img.writeImage("m0103400_2.bmp");
    }
}